首页 运维 linux运维 linux下java乱码

linux下java乱码

Nov 07, 2019 am 09:18 AM
linux 乱码

linux下java乱码

Java语言中产生乱码的原因及解决方法

a)基于awt(swing)的图形界面程序中文显示乱码 

基于awt(swing)的图形界面程序中,一般会出现菜单中的中文显示乱码,其原因一般是JVM找不到用来显示中文的字库,JVM在原始的安装下是没有中文字库的,而linux的发行版本又各不相同,其字库存放的路径和名字又各不相同,所以JVM一般是找不到linux操作系统内带的字库,解决方法是让JVM能找到linux操作系统内带的字库,如在Redflag 6.0下可以通过下面命令解决: 

mkdir /usr/java/jdk1.6.0/jre/lib/fonts/fallback 
ln -s /usr/share/fonts/chinese/TrueType/*.ttf /usr/java/jdk1.6.0/jre/lib/fonts/fallback
登录后复制

一般不需要修改JRE/lib/目录下的字体配置文件(fontconfig.OS.Version.properties)。

b)基于B/S结构的JSP(Servlet)的系统用户端浏览器中文显示乱码

页面中的中文显示乱码

对于像HTML的静态文件,其文件的字符集只要和文件中处所设置的一样即可。

对于像JSP和Servlet动态文件由于需要经过编译,在运行是由JVM解释class文件而产生用户端浏览器所需的HTML文件,如果产生中文乱码,则一般是由编译和运行过程中产生的。如果用商用的发行版Linux和服务器,一般只要将JSP或Servlet文件保存为UTF-8字符集,将中设置为UTF-8即可。如果还出现乱码则可以通过以下方法解决:

①如果服务器是自主研发的,可以通过修改源代码,指定JVM读文件、写文件以及生成用户端浏览器所需的HTML文件时,字符串与二进制序列流转换时的编码方式,从而从根本上解决问题,增强服务器的适应性,在MyWebServer 2.0中,我就采用了这种方法,代码如下:

new BufferedReader(new InputStreamReader(new FileInputStream(jspfile),”GBK”)); 
new PrintWriter(serfile,”GBK”); 
new PrintWriter(new OutputStreamWriter(os,”GBK”));
登录后复制

②当然也可以在服务器的入口文件(即含有main子函数的文件)中修改JVM的“locale”设置,代码如下:

Locale.setDefault(new Locale(“zh”,”CN”));
登录后复制

③当采用商用服务器时,可以修改启动服务器的shell文件,在启动服务器前设置环境变量“export LC_ALL=zh_CN.UTF-8”,从而改变本控制台下默认的“locale”值。 

④当然也可以修改操作系统的“locale”设置,但由于修改操作系统的“locale”设置将会影响到其他应用程序,所以一般采用该方法。 

采用上述方法的主要原因是,当JVM在首次起动时,将会把操作系统的“locale”设置为JVM的默认“locale”,在操作系统没有设置“locale”值时,JVM将会把JVM的缺省的“locale”设置为JVM的默认“locale”,当然也可以在运行应用程序时修改JVM的默认“locale”设置,在JVM进行字符串与二进制序列流相互转换时,如果指定了编码方式,将以指定的编码方式转换,否则根据JVM的默认“locale”进行转换。 

结论 

Java语言在linux下中文显示产生的乱码,主要与JVM的字库、操作系统的locale设置、JVM的默认locale设置、应用程序中的locale设置以及应用程序中直接指定的二进制序列流与字符串转化的字符集有关。是由于二进制序列流和字符串相互转化过程中所采用的字符编码方式不同或者JVM找不到所需要的字库所致,可以采取不同的方法去解决,具体采用哪种方法处理还要结合具体的应用环境。

推荐:【Linux视频教程

以上是linux下java乱码的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1425
52
Laravel 教程
1325
25
PHP教程
1272
29
C# 教程
1252
24
Linux体系结构:揭示5个基本组件 Linux体系结构:揭示5个基本组件 Apr 20, 2025 am 12:04 AM

Linux系统的五个基本组件是:1.内核,2.系统库,3.系统实用程序,4.图形用户界面,5.应用程序。内核管理硬件资源,系统库提供预编译函数,系统实用程序用于系统管理,GUI提供可视化交互,应用程序利用这些组件实现功能。

vscode上一步下一步快捷键 vscode上一步下一步快捷键 Apr 15, 2025 pm 10:51 PM

VS Code 一步/下一步快捷键的使用方法:一步(向后):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →

git怎么查看仓库地址 git怎么查看仓库地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 仓库地址,请执行以下步骤:1. 打开命令行并导航到仓库目录;2. 运行 "git remote -v" 命令;3. 查看输出中的仓库名称及其相应的地址。

notepad怎么运行java代码 notepad怎么运行java代码 Apr 16, 2025 pm 07:39 PM

虽然 Notepad 无法直接运行 Java 代码,但可以通过借助其他工具实现:使用命令行编译器 (javac) 编译代码,生成字节码文件 (filename.class)。使用 Java 解释器 (java) 解释字节码,执行代码并输出结果。

sublime写好代码后如何运行 sublime写好代码后如何运行 Apr 16, 2025 am 08:51 AM

在 Sublime 中运行代码的方法有六种:通过热键、菜单、构建系统、命令行、设置默认构建系统和自定义构建命令,并可通过右键单击项目/文件运行单个文件/项目,构建系统可用性取决于 Sublime Text 的安装情况。

Linux的主要目的是什么? Linux的主要目的是什么? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服务器操作系统,2.嵌入式系统,3.桌面操作系统,4.开发和测试环境。Linux在这些领域表现出色,提供了稳定性、安全性和高效的开发工具。

laravel安装代码 laravel安装代码 Apr 18, 2025 pm 12:30 PM

要安装 Laravel,需依序进行以下步骤:安装 Composer(适用于 macOS/Linux 和 Windows)安装 Laravel 安装器创建新项目启动服务访问应用程序(网址:http://127.0.0.1:8000)设置数据库连接(如果需要)

git软件安装 git软件安装 Apr 17, 2025 am 11:57 AM

安装 Git 软件包括以下步骤:下载安装包运行安装包验证安装配置 Git安装 Git Bash(仅限 Windows)

See all articles