java FileInputStream读取方法不断返回194
我目前正在自学Java IO,并且我能够从一个文件中读取基本的ASCII字符。txt文件,但当我使用其他拉丁字母1或255范围内的字符时,它会将其打印为194,而不是正确的字符十进制数
例如,我可以从txt文件中读取abcdefg,但如果我输入一个字符,如©我得不到169,出于某种原因我得到194。我试着用一个循环打印1-255之间的所有字符来测试这一点,但效果不错。但是,阅读此输入似乎不太可能。。。所以我有点困惑。我知道我可以使用reader对象或任何东西,但我想先通过学习字节流来介绍基础知识。以下是我的想法:
InputStream io = null;
try{
io = new FileInputStream("thing.txt");
int yeet = io.read();
System.out.println(yeet);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
# 1 楼答案
我有一些解决办法给你
第一个解决方案
对这本书有充分的了解
第二种解决方案
我有一个示例代码给你
输出:
让我们了解一下上面的程序。首先,我们将给定的Unicode字符串转换为UTF-8,以便将来使用getBytes()方法进行验证
然后,我们通过创建一个新的字符串对象,将字符集字节数组转换为Unicode,如下所示
祝你好运
# 2 楼答案
UTF-8 encoding table and Unicode characters
您可以在这里看到
©
的十六进制代码是c2 a9
,即194 169
。您的文件似乎有Big Endian Endian Endianness,您读取的第一个字节是194
这是java编码、代码点等的另一个很好的例子