又是令人头痛的字符乱码问题!!请帮忙!

07-08-17 cnng007
用windows的notepad.exe新建一个UTF-8编码的文件。然后用Java的FileInputStream读出来转换成UTF-8的字符第一个字符会是乱码。不知道为什么,有什么办法解决,先谢了。

如果各位有空,可能帮我测试一下。不知道是我的问题还是别的原因!

文件内容:<tr><td>a我爱你们</td></tr>

读取文件:

public class Test {

public static void main(String[] args) {

new Test().testFile();

}

public void testFile() {

File dir = new File("C:/a.txt");

try {

FileInputStream fi = new FileInputStream(dir);

byte[] bt = new byte[(int)dir.length()];

fi.read(bt);

System.out.println(new String(bt,"UTF-8"));

}

catch (Exception ex) {

ex.printStackTrace();

}

}

}

[该贴被cnng007于2007年08月17日 22:07修改过]

cnng007
2007-08-17 23:08
知道为什么了。是bom header的问题

但是Tomcat中的Include进来的文件还是不知道怎么处理,据说1.6已经解决这个问题,不知道有没有1.5下的解决方案,彻底的解决方案。

        ?

[该贴被cnng007于2007年08月23日 00:09修改过]

banq
2007-08-26 15:19
因为Java内部是Utf-8,而外界windows经常是GBK,所以,只有等这些操作系统愿意将他们缺省的字符集换成UTF-8,乱码问题才彻底解决,Java乱码不是Java的错。

cnng007
2007-08-27 10:08
如果自己打开二进制文件还可以自行处理,但用WEB容器就完了。

不是Java的错也是Tomcat的错。我所有的编码都是统一的(UTF-8)。其它的文本编辑器打开都是正确的(正确处理了Bom header的),因为按标准UTF-8文件可以加Bom header(字符: EF BB BF)也可以不加。

[该贴被cnng007于2007年08月27日 10:10修改过]

猜你喜欢