高手才进来,关于java IO类读取并打印中文字符的问题我生成一个文本,上面写着四行中文字,注意是四行,我


习然后用editplus另存为utf-8格式, 之后写了如下代码来测试import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;public class ReadFile {
       public static void main(String[] args) throws IOException{
              File file = new File("E:\\DEV\\EnglishReviewer\\key_tmp.txt");
              FileReader fileReader = new FileReader(file);
              String sx = fileReader.getEncoding();
              System.out.println("Coding:"+sx);    //1.这里显示 Coding: Cp1252
              FileInputStream fileInputStream = new FileInputStream(file);
              InputStreamReader inputStramReader = new InputStreamReader(fileInputStream, "utf-8");
              BufferedReader bufferedReader = new BufferedReader(inputStramReader);
              String fileContent = "";
              String line = null;
              while ((line = bufferedReader.readLine()) != null) {
               System.out.println(line);  //2.这里打印出来的是乱码
              }
       }
}
我十分想知道, 为什么coding是cp1251, 第二个,怎样才能打印出正常的中文呢?  这两个问题,我几天还没搞定,望高人指点。谢谢

解决方案 »

  1.   

    100%是你的编辑器的问题了。
    在Windows下,如果你用记事本之类的保存文件,会在文件开头出现一个文件编码的标识
    你去搜索BOM就知道了。
    你的代码没有问题,你可以用记事本编辑文件,使用默认的字符集,一般是GBK
    然后修改你的代码看看。我用的textpad编辑,另存为UTF-8的,也顺利通过了。
      

  2.   

    InputStreamReader inputStramReader = new InputStreamReader(fileInputStream, "ISO-8859-1");
    这个应该可以,试试
    我前几天也遇到过类似的问题
      

  3.   

    编码问题,你直接用记事本另存为utf-8格式再试试
      

  4.   

    windows-->preferences-->general-->workspace-->text encoding 
    修改下编码试试
      

  5.   

    我只是只知道出现乱码的问题,是因为你的编码不一致!!一般的都是GBK
      

  6.   

    回复楼上各位,我的Eclipse的编码已经是UTF-8了(windows-->preferences-->general-->workspace-->text encoding中设置),并且,我的文本,是用记本事另存为utf-8格式的,但我的代码还是不行,我觉得楼上各位之所以可以正常显示的原因是,你们的windows是中文版的,但我的是英文版的win xp. 
      

  7.   

    是啊。。你用gbk读读试试如果不是乱码。我就不说了。。如果还是。。你就转下乱码把
    new String(String.getBytes("iso-8859-1"),"gbk")
      

  8.   

    上面也有人说把记事本改成GBK编码,就是因为中文字体在英文版的操作系统下面显示不出中文于是才发明了utf-8或unicode编码啊。
      

  9.   


    紫竹大哥一语中的。bom是也
      

  10.   

    用UltraEdit看看最前面的几个字节。BOM问题。。网上搜搜。。
      

  11.   

    显然与编辑器没关系
    我日文OS默认MS932,就算代码写了转码转出来的"gbk"字符,os不支持照样乱码
      

  12.   


    lz的os应该支持的,否则他记事本里没法打中文
      

  13.   

     编码问题,Java中默认编码是Unicode
      

  14.   

    editplus的问题。
    老紫竹说得对。
    你用其他的文本软件试试看吧。或者直接用程序向文件里面写也行。