我在输入流中读取所有日文/中文字符时遇到问题。
基本上,我从API检索JSON对象。
以下是我的代码:
try {
URL url = new URL(string);
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),StandardCharsets.UTF_8));
result = br.readLine();
br.close();
} catch(Exception e) {
}
由于某种原因,输入流不会读取所有字符。可能是什么问题呢?
具体来说,当我在控制台中打印出来时,会出现一些字符,而有些则显示为带有问号的黑框。此外,当我通过浏览器检查实际的JSON对象时,没有带问号的黑框。
答案 0 :(得分:0)
“打印到控制台”时所看到的内容与是否读取数据无关,而是与控制台的功能有关。
如果您从URL获取数据,并且您确定已获取的字节代表UTF-8编码文本,并且整个数据适合一行文本,那么您的代码就没有理由不行。
听起来你不确定是否有效,因为你试图将文本打印到控制台。也许你的控制台没有设置为渲染UTF-8编码的文本?也许你的控制台字体没有足够的字形来覆盖字体?
您可以尝试以下两件事:
不是将文本写入控制台,而是将其保存到文件中。然后使用像hexdump -C
这样的命令(在* nix系统上,我不知道如何在Windows中执行此操作)并查看二进制表示以确保所有预期的字符都在那里。
将数据保存到文本文件,然后在Web浏览器中打开,因为浏览器可能比控制台具有更丰富的字体支持。
如果您仍然怀疑自己错误地读取了远程数据,可以通过JSON验证程序运行检索到的文本,只是为了确保。
答案 1 :(得分:-1)
请改为尝试:“ISO-8859-1”。