java - 为什么 FileReader 流从文本文件中读取 237、187、191?
问题描述
我有一个文本文件,里面只有一个字符“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();
}
}
}
}
解决方案
你确定不是239 187 191
吗?(EF BB BF
十六进制)
您会看到文件的字节顺序标记:
字节顺序标记 (BOM) 是一个 Unicode 字符,U+FEFF BYTE ORDER MARK (BOM),它作为一个幻数出现在文本流的开头可以向读取文本的程序发出几个信号:
文本流的字节顺序或字节序;
文本流的编码是 Unicode 的事实,具有很高的可信度;
文本流被编码为哪种 Unicode 编码。
推荐阅读
- c# - EF 一对多只显示第一条记录
- python - Django中用于创建注册页面的“没有这样的表”错误是什么?
- r - 使用 6 个(5 个独立变量和 1 个因变量)数据集运行回归,这些数据集都包含来自 27 个国家/地区的 8 年数据(时间序列)
- r - 创建新的 R 包时如何修复“没有可见的全局函数定义”
- excel - 如何将重复的 Excel 数据重组为表格?
- cuda - CUDA 动态共享内存
- c++ - 交换指针后删除动态分配的内存
- python - 这条单行“import seaborn as sns”将数据帧转储到标准输出?
- asp.net - AjaxCall 删除不起作用接收 405 错误 webAPI
- cordova - 非法指令:安装cordova时4