答:“messageResource在linux乱码问题”

问:


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

在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")...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值