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文件的编码格式呢?

解决方案 »

  1.   

    你用的这种是基于字节流的方法,
    换用Reader,基于unicode字符流的方法把,就不会有乱码了
      

  2.   

    用 FileInputStream 使用字节的方式读入到 byte [] b 中,然后再判断。推荐楼主:(推荐)
    http://www.regexlab.com/zh/encoding.htm
      

  3.   

    你可以根据最先读进来的前两个byte来判定是什么编码的文件。0xefbb: 编码格式"UTF-8";
    0xfffe: 编码格式"Unicode";
    0xfeff: 编码格式"UnicodeBig";
    你试试看
      

  4.   

    怎么获取前两个byte?请指教.
    用getBytes()啊。
      

  5.   

    今天使用记事本时发现汉字乱码了。
    WriteIntoText("别乱了sdfsdf士大夫师傅是",Server.MapPath("~/caiji/www.wearelearn.net.txt"));
    发现其中汉字乱码了。
    原来xp系统默认的编码是gb2312
    解决办法:
     增加这一行:StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));
    解决源码:
     
            FileStream fs = new FileStream(str_SavePath, FileMode.OpenOrCreate);        StreamWriter sw = new StreamWriter(fs,System.Text.Encoding.GetEncoding("gb2312"));        sw.WriteLine(str_write);        sw.Close();        fs.Close();
    转自:
    http://www.wearelearn.net/asp_net/aspnetFile_9_35/621.html