java.io写文件在linux中出现中文乱码之解决

    昨天用java io写个系统的操作日志进txt文件时,遇到这么个问题:在windows系统上测试过了,是没问题的,但是放到服务器(linux系统)上写到文件的中文都变成了乱码!究其原因,原来是这么个情况:linux下默认字符集是utf-8,而windows默认编码是gbk,而java 往文件里面写入中文时是根据系统默认字符集来写的。
    最直接的办法就是在使用java io写文件时强制进行转码。最后是这样写的:
          //得到系统默认的encoding码  
          String fileEncode = System.getProperty( "file.encoding");
          File outFile = new File(ConfHelper.getConf( "OperLogPath"));
            
          OutputStreamWriter ow = new OutputStreamWriter(
               new FileOutputStream(outFile, true), fileEncode);
            
          String logStr = "[" + DateUtil.formatDate( new Date())
              + "]用户Id=" + loginUser.getId() + ",用户名称="
              + loginUser.getUsername() + " 修改彩绣类别 typeid="
              + typeid + " 为 [catgery=" + catgery + ",restype="
              + restype + ",ressubtype=" + ressubtype + "]\r\n";
            
          ow.write( new String(logStr.getBytes( "UTF-8"), fileEncode));
            
          ow.close();

    注意到有些资料说还有一种解决方案就是,修改linux的系统编码字符集:

         修改/etc/sysconfig/i18n 这个文件  

         将LANG="zh_CN.UTF-8"修改为:  
         LANG="zh_CN.GBK"  
         保存并关闭,运行下面的命令使配置生效:  
         shell> source /etc/sysconfig/i18n
但是,这就完全改变了服务器的编码,可能会引起其它效应,所以应慎重。我没有尝试,有需要的话,可以一试。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值