gpt4 book ai didi

android - 为什么在使用 InputStream 从 .txt 读取时得到问号而不是符号?

转载 作者:行者123 更新时间:2023-11-30 04:12:49 25 4
gpt4 key购买 nike

我知道这一定很明显,但找不到答案。

我应该怎么做才能获得正确的字符,例如 "、' 等...?

这是我正在使用的方法,

public void read(Context context) {

InputStream inputStream = context.getResources().openRawResource(
R.raw.puzzles);
Scanner scanner = new Scanner(inputStream);
scanner.useDelimiter(PATTERN);
for (int i = 0; i < 70; i++) {
ids[i] = scanner.next();
titles[i] = scanner.next();
questions[i] = scanner.next();
answers[i] = scanner.next();
}

}

谢谢

最佳答案

经过几天的研究,我终于找到了答案。

首先,我从 InputStream 创建了一个 BufferedReader 用于字符读取而不是原始字节读取。

最重要的是,我使用带有 charSetName 的构造函数实例化了 InputStream。

如果您在记事本中转到“另存为”,您可以选择编码。

最后我找到了here支持的编码。

NotePad 中默认的似乎是 ANSI,似乎不支持,所以我更改了它并将我的 .txt 文件保存为 UTF8。

代码如下:

public void read(Context context) {

InputStream inputStream = context.getResources().openRawResource(
R.raw.puzzles);

BufferedReader bufferedReader = null;
try {
bufferedReader = new BufferedReader(new InputStreamReader(
inputStream, "UTF8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}

Puzzle p = null;

Scanner scanner = new Scanner(bufferedReader);
scanner.useDelimiter(TOKEN);
// Skips the first strange char
scanner.next();
while (scanner.hasNext()) {

p = new Puzzle();
p.setId(scanner.next());
p.setTitle(scanner.next());
p.setQuestion(scanner.next());
p.setAnswer(scanner.next());
puzzles.add(p);
}

}

关于android - 为什么在使用 InputStream 从 .txt 读取时得到问号而不是符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10555873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com