java.io写文件在linux中出现中文乱码之解决
时间 2020-10-02
标签
java.io
java
文件
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
可是,这就彻底改变了服务器的编码,可能会引发其它效应,因此应慎重。我没有尝试,有须要的话,能够一试。