有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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();
        }

共 (2) 个答案

  1. # 1 楼答案

    我有一些解决办法给你

    第一个解决方案
    对这本书有充分的了解

    第二种解决方案
    我有一个示例代码给你

    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);
       }
    }
    

    输出:

    hey捦

    让我们了解一下上面的程序。首先,我们将给定的Unicode字符串转换为UTF-8,以便将来使用getBytes()方法进行验证

    String str = "hey\u6366";
    byte[] charset = str.getBytes("UTF-8")
    

    然后,我们通过创建一个新的字符串对象,将字符集字节数组转换为Unicode,如下所示

    String result = new String(charset, "UTF-8");
    System.out.println(result);
    

    祝你好运