我有一个文本文件,里面只有一个字符“ T”,我创建了一个读取流,将正在读取的内容输出到控制台,我得到了239、187、191和84,我知道84代表'T',我知道239、187、191也代表其他字符,但我的文本文件中没有这些字符,这是怎么回事?
public class Test {
public static void main(String args[]) throws IOException {
FileInputStream in = null;
try {
in = new FileInputStream("input.txt");
int c;
while ((c = in.read()) != -1) {
System.out.println(c);
}
}finally {
if (in != null) {
in.close();
}
}
}
}
答案 0 :(得分:3)
您确定不是239 187 191
吗? ({EF BB BF
,十六进制)
您看到文件的byte order mark:
字节顺序标记(BOM)是Unicode字符U + FEFF BYTE ORDER MARK(BOM),它在文本流开始时显示为魔术数字,可以向读取文本的程序发出信号: / p>
文本流的字节顺序或字节序;
文本流的编码是Unicode的事实,具有很高的可信度;
文本流以哪种Unicode编码编码。