大家帮忙看看输出为什么是这样的import java.io.*;public class Test { /**
 * @param args
 */
public static void main(String[] args) throws IOException{
FileReader ty1 = new FileReader("ANSI.txt");
System.out.println(ty1.read());
System.out.println(ty1.read());
System.out.println(ty1.read());
System.out.println(ty1.read());

}}
输出为
23159
90
119
-1
ANSI.txt内容为:婷Zw 
编码为:ANSI
import java.io.*;public class Test { /**
 * @param args
 */
public static void main(String[] args) throws IOException{
// TODO 自动生成方法存根
FileReader dwt1 = new FileReader("Unicode.txt");
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read());
System.out.println(dwt1.read()); }}
输出为
65533
119
90
90
0
119
0
-1
Unicode.txt内容也为:婷Zw
编码为:Unicode在此感谢所有的回复,谢谢大家。

解决方案 »

  1.   

    说名废话,问题的本身就是答案
    因为你的编码不同所以输出的东西不同
    ty1.getEncoding
    dwt1.getEncoding
      

  2.   

    超级感谢imasmallbird,我现在也认为是这样的问题了,我再看看JDK说明文档,也谢谢其他的朋友,分等下给哈,不介意吧。
      

  3.   

    看看编码规范,
    ANSI本地化编码,中文是两个字节,是两个连续的ASCII值,
    英文是一个字节,每个字节对应一个ASCII 值,
    FileReader 默认情况下是按照本地编码读取“字符流”而不是字节流
    所以23159 
    90 
    119 
    -1 
    分别表示汉字的两个连续ASCII(23159)、Z(90) w(119),-1是到头了.
      

  4.   

    Unicode 这个俺现在没看出来,只知道它实际是8个字节长,
    汉字和英文都是2个字节,还有个‘\0’结束符也是两个字节,把它按本地码读没看出来规则,但看它一共输出7个有效字节,应该是把一每个字节都单独当一个有效字符输出了
      

  5.   

    关于JAVA IO 确实有点棘手~~~
      

  6.   

    真的不错哈!Java io 的经典问题啊!对了大家有没有什么办法把 UTF-8 编码转化为字符串啊?(用Java内部方法)谢谢了!!!