我有一个文本内容为:
EXTRACT|2010-05-25|5|7116.00
DETAIL|9|2010-05-25|1|110201|HERVIER|PATRICE (艾文)|
DETAIL|9|2010-05-25|2|110201|HERVIER|PATRICE (艾文)|
文本编码方式为UTF-8,当我未修改二三行的内容时读取的“EXTRACT”打印是的正确的,但当我修改二三行的内容后再读取的时候“EXTRACT”打印为“?EXTRACT”,而别的都显示正常,我用别的编码方式读取还是同样效果,请问为什么修改后打印的结果不一样?
这是我的读取方法:
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8"); 
BufferedReader br =  new BufferedReader(read);

解决方案 »

  1.   

    楼主我是这么做的,像你这么说的,改了之后得到的结果也是正确的。一般情况下在读数据流的时候并不设置编码。InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");"UTF-8"先去掉试试。我是直接在目录中创建文件的。
    public static void readFile(){
    String fileName = "e://heloworld.txt";
    StringBuffer buffer = new StringBuffer();
    InputStreamReader read = null;
    BufferedReader reader = null;
    try {
    read = new InputStreamReader(new FileInputStream(fileName));
    reader = new BufferedReader (read);
    while(true){
    String str = (String)reader.readLine();
    if(str == null){
    break;
    }
    System.out.println(str);
    buffer.append(str);
    buffer.append(",");
    }

    System.out.println(buffer.toString());

    } catch (Exception e) {
    e.printStackTrace();

    finally{
    try {
    read.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
      

  2.   

    不行!如果不用UTF-8读取的话,就会打印出乱码的