日期:2014-05-20  浏览次数:20717 次

读取TXT文件乱码

InputStream   input   =   file.getInputStream();
InputStreamReader   inReader   =   new   InputStreamReader(input);
读取Unicode编码的TXT文件是乱码,
通过修改上面代码:
InputStream   input   =   file.getInputStream();
InputStreamReader   inReader   =   new   InputStreamReader(input, "Unicode ");
就不会产生乱码,但万一别人上传的TXT是UTF-8,以上程序又会读取乱码了,
请问能不能获取TXT文件的编码格式呢?

------解决方案--------------------
顶一下
------解决方案--------------------
没有办法
------解决方案--------------------
你用的这种是基于字节流的方法,
换用Reader,基于unicode字符流的方法把,就不会有乱码了
------解决方案--------------------
用 FileInputStream 使用字节的方式读入到 byte [] b 中,

然后再判断。

推荐楼主:(推荐)
http://www.regexlab.com/zh/encoding.htm

------解决方案--------------------
你可以根据最先读进来的前两个byte来判定是什么编码的文件。

0xefbb: 编码格式 "UTF-8 ";
0xfffe: 编码格式 "Unicode ";
0xfeff: 编码格式 "UnicodeBig ";
你试试看
------解决方案--------------------
怎么获取前两个byte?请指教.
用getBytes()啊。
------解决方案--------------------
为什么不用字符流去读数据呢