日期:2014-05-16 浏览次数:20655 次
昨天用java io写个系统的操作日志进txt文件时,遇到这么个问题:在windows系统上测试过了,是没问题的,但是放到服务器(linux系统)上写到文件的中文都变成了乱码!究其原因,原来是这么个情况:linux下默认字符集是gbk,而windows默认编码是utf-8,而java 往文件里面写入中文时是根据系统默认字符集来写的。
//得到系统默认的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();