unix环境下写文件内容出现乱码,该如何处理?
Windows编码方式:GBK
Hp-unix编码方式:EUC_CN
<%
try {
String path = System.getProperties().getProperty( "LOGPATH ") + "cpmis_demo.log ";
String sMsg = "你好吗?dsfadsafd我很好,你了?邱喆邱喆邱喆邱喆邱喆邱喆邱喆 ";
out.println(path);
FileWriter logfile = new FileWriter(path, true);
String sysEncode = logfile.getEncoding();
out.println( " <br/> <br/> <br/> <br/> ");
out.println(logfile.getEncoding());
logfile.write( "\r\n 1=> ");
logfile.write(new String(sMsg.getBytes(sysEncode), "ISO8859_1 "));
logfile.write( "\r\n 2=> ");
logfile.write(new String(sMsg.getBytes(sysEncode), "utf-8 "));
logfile.write( "\r\n 3=> ");
logfile.write(new String(sMsg.getBytes(sysEncode), "GB2312 "));
logfile.write( "\r\n 4=> ");
logfile.write(new String(sMsg.getBytes(sysEncode), "GBK "));
logfile.write( "\r\n 5=> ");
logfile.write(new String(sMsg.getBytes(sysEncode), "EUC_CN "));
logfile.flush();
logfile.close();
} catch (Exception e) {
strUtils.WriteLog(e.toString());
} finally {
}
%>
==================
为什么,往日志文件里面写内容, "喆 "字会乱码?该如何解决?谢谢!!
=================
服务器是hp-unix,weblogic
=================
1=> ????????dsfadsafd???????????????????????????????????
2=> ?????dsfadsafd??????????????????????????????
3=> 你好吗?dsfadsafd我很好,你了?邱?邱?邱?邱?邱?邱?邱?
4=> 你好吗?dsfadsafd我很好,你了?邱?邱?邱?邱?邱?邱?邱?
5=> 你好吗?dsfadsafd我很好,你了?邱?邱?邱?邱?邱?邱?邱?
------解决方案--------------------发错地方了吧,这是Java问题,虽然说他跑在Unix上,但Java号称跨平台呀。
我也做过一点Java,
sysEncode和你那行字: "你好吗?dsfadsafd我很好,你了?邱喆邱喆邱喆邱喆邱喆邱喆邱喆 "
的输入编码不一致,下面的写文件的时候,就相当于将那行文字的编码,用sysEncode编码转成你在new String(sMsg.getBytes(sysEncode), "utf-8 ")里写的编码。不兼容的字符就是乱码。
sysEncode不能用logfile.getEncoding---这个可能会取到LANG或LC_CTYPE的编码,而是用和输入那行字时所用输入法的编码方式一致的编码。
如果logfile.getEncoding和那行字本来的编码一致,你就不需要转换。
------解决方案--------------------用VI看看程序