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
但是,这就完全改变了服务器的编码,可能会引起其它效应,所以应慎重。我没有尝试,有需要的话,可以一试。


     本文转自NightWolves 51CTO博客,原文链接:http://blog.51cto.com/yangfei520/551057 ,如需转载请自行联系原作者



相关文章
|
24天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
78 1
|
28天前
|
Linux 数据安全/隐私保护 Windows
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
30 0
|
23天前
|
人工智能 安全 Linux
【Linux】Linux之间如何互传文件(详细讲解)
【Linux】Linux之间如何互传文件(详细讲解)
|
2天前
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
11 1
|
2天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(24) 如何在Ubuntu中操作rootfs.img文件
Linux(24) 如何在Ubuntu中操作rootfs.img文件
5 0
|
7天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
16 0
|
9天前
|
Linux Shell 开发工具
Linux文件常用操作
Linux文件常用操作(几乎覆盖所有日常使用)
83 0
|
10天前
|
Linux 内存技术 Perl
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
【ZYNQ】制作从 QSPI Flash 启动 Linux 的启动文件
|
16天前
|
Linux
linux 超过4个G的文件传不上去的解决办法
linux 超过4个G的文件传不上去的解决办法
9 0
|
16天前
|
Linux 索引
linux 文件查找 和文件管理常用命令
linux 文件查找 和文件管理常用命令
22 0