在Websphere6.0中部署的项目在运行中,出现了编码错误,查看日志显示为:
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java(Compiled Code))
at sun.nio.cs.StreamDecoder$ConverterSD.convertInto(StreamDecoder.java
(Inlined Compiled Code))
at sun.nio.cs.StreamDecoder$ConverterSD.implRead(StreamDecoder.java(Compiled Code))
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java(Compiled Code))
at java.io.InputStreamReader.read(InputStreamReader.java(Compiled Code))
at java.io.BufferedReader.fill(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
at java.io.BufferedReader.readLine(BufferedReader.java(Compiled Code))
at com.coshine.util.PropertiesCH.load(PropertiesCH.java:387)
at com.coshine.util.PropertyFile.reloadA(PropertyFile.java:609)
at com.coshine.util.PropertyFile.<init>(PropertyFile.java:167)
at com.coshine.ccs.servlet.map.BCCMAP2000Main.performAction
(BCCMAP2000Main.java:51)
原因:
出现这个问题的原因,从日志看是编码转换问题ByteToCharUTF8
结合程序,根据日志看产生问题的位置是在通过输入流读文件时产生的(.BufferedReader.readLine),查看解析的comm.properties文件,发现在这个文件中存在中文乱码,去除这些中文乱码,问题得到解决,同样的情况在tomcat5.0中并不会出现,所以这个应该应用服务器容器的编码,文件解析的编码不同引起的
解决:
去除这些中文乱码,问题得到解决