大家帮忙看看输出为什么是这样的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在此感谢所有的回复,谢谢大家。
* @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在此感谢所有的回复,谢谢大家。
因为你的编码不同所以输出的东西不同
ty1.getEncoding
dwt1.getEncoding
ANSI本地化编码,中文是两个字节,是两个连续的ASCII值,
英文是一个字节,每个字节对应一个ASCII 值,
FileReader 默认情况下是按照本地编码来读取“字符流”而不是字节流
所以23159
90
119
-1
分别表示汉字的两个连续ASCII(23159)、Z(90) w(119),-1是到头了.
汉字和英文都是2个字节,还有个‘\0’结束符也是两个字节,把它按本地码读没看出来规则,但看它一共输出7个有效字节,应该是把一每个字节都单独当一个有效字符输出了