我正在自学Java IO,现在可以从.txt文件中读取基本的ASCII字符,但是当我到达其他Latin-1或255范围内的字符时,它将打印为194,而不是正确的字符十进制数字。
例如,我可以从txt文件中读取abcdefg,但是如果我输入©这样的字符,我不会得到169,则由于某种原因我会得到194。我尝试通过仅打印1-255之间的所有字符(使用循环)来进行测试,但是那个有效。读这篇文章似乎没有……所以我有些困惑。我知道我可以使用阅读器对象或其他任何对象,但我想首先通过学习字节流来介绍基础知识。这是我所拥有的:
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();
}
最佳答案
我为您提供一些解决方案。
第一个解决方案
对此site的书有充分的了解
第二种解决方案
我有一个示例代码
public class Example {
public static void main(String[] args) throws Exception {
String str = "hey\u6366";
byte[] charset = str.getBytes("UTF-8");
String result = new String(charset, "UTF-8");
System.out.println(result);
}
}
输出:
嘿捦
让我们了解以上程序。首先,我们使用getBytes()方法将给定的Unicode字符串转换为UTF-8,以供将来验证
String str = "hey\u6366";
byte[] charset = str.getBytes("UTF-8")
然后,通过创建新的String对象,将字符集字节数组转换为Unicode,如下所示
String result = new String(charset, "UTF-8");
System.out.println(result);
祝好运
关于java - FileInputStream的读取方法不断返回194,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57649491/