LoveTide的专栏

砸锅卖铁去美国

原创 答:“messageResource在linux乱码问题”收藏

新一篇: “SET 命令设置的环境变量在 FOR 循环中始终为空”问题的原因与解决方法 | 

问:


´íÎó: Êý¾Ý²»ÄÜΪ¿Õ

在windows下可以正常显示,到linux就成了上面的乱码
bundle = ResourceBundle.getBundle(bundleName, locale,getCurrentLoader(bundleName)))) {
  // see if we have a hit
  try {
      summary = bundle.getString(messageId);
      if(locale!=null && Constant.SYSTEM_LANGUAGE.equals("zh")){
       summary  = new String(summary.getBytes("ISO8859_1"), "GBK");
//       System.out.println("summary(ISO88591-GBK)="+summary);
      };
  }
  catch (Exception e) {
  }
     }
有人遇上此问题吗

在windows下面以上代码可以正常运行,但到了linux就根本不运行


答:


给你个提示: 安装 linux 时,大都默认的是 utf-8 编码(这包括它的文件系统的编码等等) 你可以修改 /etc/sysconfig/i18n 文件来修改“语言、编码”

而我们常用的“简体中文 Windows”的内部编码是国标系列编码,如:gb2312、gbk、gb18030(但是其ntfs文件系统编码是unicode)

所以,当你采用原始的 .properties 文件(这里原始指的是:在简体中文 Windows 编辑的、未经过native2ascii.exe 转换编码的以国标系列编码存储的 .properties 资源文件)作为输入时,你在代码里必须进行从 iso-8859-1 到国标系列(gbXXXXX)的编码转换来读取,这在简体中文 Windows 下当然没问题,到了以utf-8为编码的 linux 环境下自然要出现乱码。
这种情况的乱码还会在类似“读取模版文件”(比如发送邮件模版)、简体中文的 FTP 用户端访问 utf-8 编码的 linux 上的 FTP 服务器列出文件名、在 utf-8 编码的 linux 压缩/打包文件然后在简体中文 Windows 解压缩文件后的文件名……等等的时候出现……

解决方案:
1、更改linux的编码方式 (/etc/sysconfig/i18n )。不推荐!这样一改,原先 linux 下以 utf-8 工作时产生的文件/文件名恐怕又要乱码了。。。
2、更改 .properties 文件存储的编码方式,改为以 utf-8 编码方式存储,相应的代码自然要改为 getBytes("iso-8859-1", "utf-8")...

发表于 @ 2005年08月25日 10:41:00|评论(loading...)|编辑

新一篇: “SET 命令设置的环境变量在 FOR 循环中始终为空”问题的原因与解决方法 | 

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 刘研(LoveTide)