`
dishhy
  • 浏览: 9716 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java在linux中文乱码问题

阅读更多
解决java在linux中文乱码问题
2009年06月30日 星期二 01:06
事情的起因是:我使用geany集成开发环境开发,里面使用了中文,在综端用javac命令编译java程序的时候出现了中文无法解释。看起来和不爽,通过我的查询,明白了结果,一下是我查到的两篇文章,我也是根据这两篇文章解决问题的。

解决的方法有:

1:在geany中设置“生成”,在编译改为javac "%f" -encoding GB18030,执行改为java "%e" -encoding GB18030,这样你要是用geany编译和运行就不会出现乱码了。在“编辑”、“首选项”里面把编码都设置文GB18030,不知道不设置的结果是什么,没有测试。

2:如果你不喜欢在geany里面编译,可以在综端里面用javac ClassName.java -encoding GB18030和javac ClassName -encoding GB18030就可以了。

3:怕麻烦那就在/etc/profile下添加两行 

export LC_ALL="zh_CN.GBK"

export LANG="zh_CN.GBK"

保存后,用source /etc/profile使其生效。

在修改前,可以用locale命令查看当前的设置,修改后在查看有没有生效。

不知道这样改会不会有什么后果。等待以后验证。

------------第一篇参考文章----------------

由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作 系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保 存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为 JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class 文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到 的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只 不过此时它己经由file.encoding格式转化为UNICODE格式了。
-----------第二篇参考文章---------------

   修改/etc/sysconfig/language文件,将RC_LANG, RC_LC_ALL设置为zh_CN.GB2312, 同时将ROOT_USES_LANG设置为 "yes"

  一。Linux系统的默认编码设置。

  /etc/sysconfig/i18n

  Controls the system font settings. The language variables are used in /etc/profile.d/lang.sh. An example i18n file:

  LANG="zh_CN.GB18030"

  LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"

  SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"

  SYSFONT="lat0-sun16"

  以上是把系统的默认字符集设置为GB2312.现在很多系统默认编码字符集是UTF-8。可以通过设置这个文件来改变系统的默认字符集。

  另外,也可在用户的环境变量或者用户的环境变量文件加入路径变量的声明:

  在系统的预处理文件中声明,这样对整个系统起作用:

  #vi /etc/profile

  在文件尾加入

  LC_ALL="zh_CN.GBK"

  export LANG="zh_CN.GBK"

  在用户的预处理文件中声明,对单独的用户起作用:

  #vi /root/.bash_profile

  在文件尾加入

  export LC_ALL="zh_CN.GBK"

  export LANG="zh_CN.GBK"

  以上配置重新启动服务器使更改生效。

  二。查看系统当前字符集。

  locale:local encode,即本地编码的意思。这个命令不带任何参数就是显示当前系统的字符集编码。也可以设置环境变量,全体参数man locale

   三。安装字体。

  #mkdir 要存放字体的文件夹

  #cp *.ttf 刚才创建的文件夹

  生成 fonts.dir 文件

  #ttmkfdir > fonts.dir

  注:mkfontdir 用于生成点阵字体的 fonts.dir 文件,ttmkfdir 用于生成 TrueType 字体的 fonts.dir 文件。由于 ttmkfdir 不能识某些汉字TTF的编码,需手工修改。

  生成的 fonts.dir 如下:

  fonts.dir

  ======

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-ascii-0

  改为:

  simsun.ttf -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0

  生成 fonts.alias 文件

  #cat fonts.dir > fonts.alias

  将 fonts.alias 内容改为:

  SimSun -misc-SimSun-medium-r-normal--0-0-0-0-p-0-gb2312.1980-0

  将字体的路径添加的FontPath中

  #vi /etc/X11/XF86Config

  在此文件中添加刚才创建的路径

  #step

  #fc_cache 刚才创建的路径,强制刷新字体缓存,使字体生效。

  四。vim编码。

  encoding—-该选项使用于缓冲的文本(你正在编辑的文件),寄存器,Vim 脚本文件等等。你可以把 ‘encoding’ 选项当作是对 Vim 内部运行机制的设定。

  fileencoding—-该选项是vim写入文件时采用的编码类型。

  termencoding—-该选项代表输出到客户终端(Term)采用的编码类型。

  此3个变量的默认值:

  encoding—-与系统当前locale相同,所以编辑文件的时候要考虑当前locale,否则要设置的东西就比较多了。

  fileencoding—-vim打开文件时自动辨认其编码,fileencoding就为辨认的值。为空则保存文件时采用encoding的编码,如果没有修改encoding,那值就是系统当前locale了。

  termencoding—-默认空值,也就是输出到终端不进行编码转换。
分享到:
评论

相关推荐

    Linux中java log输出中文乱码.docx

    Linux 中 Java log 输出中文乱码问题是 Java 应用程序在 Linux 环境下一个常见的问题。该问题的产生是由于 Linux 系统的 locale 设置不正确导致的。locale 是 Linux 系统中用于控制字符编码、日期格式、货币格式、...

    linux下java生成图片乱码问题.doc

    在Linux环境下,使用Java生成包含中文的图片时,经常遇到一个常见的问题——中文字符显示为乱码。这个问题的根源在于Linux系统默认的字体库中可能缺少支持中文的字体,因此在渲染中文字符时无法正确显示。针对这个...

    Linux下Java程序中文乱码问题研究.pdf

    本文主要研究了在Linux操作系统下Java程序中文乱码的问题。该问题是指在Java程序中使用中文时,出现乱码的情况。这是一个常见的问题,在开发Java程序时经常会遇到。 字符集 字符集是指字符的集合,每个字符集包含...

    JFreechart 在linux下不显示及中文乱码问题

    标题“JFreechart在Linux下不显示及中文乱码问题”指出的是在使用JFreechart库创建图表时,在Linux操作系统环境下遇到的两个主要问题:图表无法正常显示以及中文字符出现乱码。JFreechart是一个Java库,用于生成高...

    解决Linux操作系统下Java的中文乱码问题

    在Linux操作系统中,Java应用程序处理中文字符时可能会遇到乱码问题。这主要涉及到编码格式的不匹配,因为Linux系统默认采用UTF-8编码,而某些Java应用或文件可能使用了GB2312、GBK或其他编码。本篇将详细介绍如何...

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose

    java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 的问题 java aspose java aspose word 上传到服务器 导出的word 中文字体乱码 ...

    java中文乱码问题详解--- java中文乱码问题详解

    但在实际应用中,Java程序可能会部署在不同编码环境的操作系统上(如中文Windows和英文Linux),这就涉及到了编码转换的问题。如果编码转换不当,很容易导致中文乱码的情况出现。 #### 二、Java中文问题的根本原因 ...

    Linux下java的Swing程序乱码解决

    在Linux环境下运行Java Swing应用程序时,遇到中文乱码问题是一个常见的挑战。这通常源于系统编码、字体支持或Java运行环境的设置不当。本文将详细探讨Linux下Java Swing程序中文乱码的原因及解决方案,帮助开发者...

    Java开发中文乱码问题解决

    在Java开发过程中,中文乱码问题是一个常见的困扰,尤其是在处理文本输入输出时。本文将深入探讨这个问题,并提供解决策略。 首先,我们需要理解字符编码的基本概念。字符编码是将字符(如汉字)转换为数字的过程,...

    AWT在linux下的中文乱码

    标题 "AWT在Linux下的中文乱码" 涉及的是Java图形用户界面(GUI)开发中的一个问题,尤其是在非Windows操作系统环境下。AWT(Abstract Window Toolkit)是Java早期提供的一个用于创建GUI的基本库,它依赖于本地操作...

    linux下Java字体乱码(解决图像中中文乱码)

    在Linux环境下,Java应用程序在处理中文字符时可能会出现字体乱码的问题,这主要与系统默认字体、Java虚拟机(JVM)的配置以及可用的中文字体资源有关。本篇文章将详细探讨这个问题及其解决方案,帮助开发者解决Java在...

    swing中文乱码问题(Linux和window)

    在Linux系统下使用Swing进行GUI开发时,可能会遇到中文乱码的问题。解决这一问题通常需要对系统的编码环境进行适当的配置。以下是一个详细的步骤指南,帮助开发者解决乱码问题。 **第一步:** 检查系统默认字符集...

    JAVA常见中文乱码问题解决方法

    Java编程语言在处理中文字符时可能会遇到乱码问题,这主要源于Java的源代码编码、JVM处理class文件以及不同操作系统、数据库系统之间的编码不一致。本文深入剖析了Java中文问题的根源,并提供了相应的解决方案。 一...

    java解决中文乱码问题

    Java 解决中文乱码问题 Java 中文乱码问题是中国程序员无法避免的话题。乱码的出现是由于中文和英文的编码格式不同,解码也是不一样的。如果中国的程序员不会遇到乱码,那么只有使用汉语编程。Han语编程是怎么回事...

    解决linux中文乱码

    尤其是在使用 Java 应用程序时,中文乱码问题变得更加突出。幸运的是,解决这个问题并不困难。本文将讲述在 Ubuntu 操作系统下安装 Java 字体配置,解决中文乱码问题。 首先,我们需要了解 Linux 中文乱码的原因。...

    Java中文乱码浅析及解决方案

    Java 中文乱码问题是一个常见的编程困扰,尤其对于处理中文字符的Java程序而言。这个问题通常源于字符编码的不一致,即不同环节采用的字符编码标准不统一。本文将深入探讨这一问题,并提供相应的解决方案。 首先,...

    jfreechart在LINUX下乱码问题的解决

    总结来说,解决JFreeChart在Linux下的中文乱码问题,主要涉及调整JVM的字符集设置,正确使用编码,以及在JFreeChart的图表配置中使用支持中文的字体。具体实现细节和步骤需要参考相关的代码示例或博客文章进行操作。

    Linux乱码问题解决方案.docx

    本文将介绍 Linux 乱码问题的解决方案,包括安装 ibus 输入法、fcitx 输入法、解决 UTF-8 编码问题、解决 Flash 中的中文显示问题、解决 Java 程序中的中文显示问题等。 一、安装 ibus 输入法 在 Ubuntu 系统中,...

    java读取文件中文乱码

    在Java编程中,读取包含中文字符的文件时可能会遇到乱码问题,这通常是由于编码格式不匹配导致的。要解决这个问题,我们需要理解文件的原始编码格式,并在Java代码中正确地设置字符集。以下是一些相关的知识点: 1....

Global site tag (gtag.js) - Google Analytics