我正在自学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/

10-11 02:45