繁体   English   中英

从InputStream读取UTF-8编码的文本

[英]Reading UTF-8 encoded text from InputStream

我在从输入流中读取所有日语/中文字符时遇到问题。

基本上,我是从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对象时,没有带有问号的黑匣子。

“打印到控制台”时看到的内容实际上与是否读取数据无关,但与控制台的功能有关。

如果您要从URL提取数据,并且可以确定所提取的字节代表UTF-8编码的文本,并且整个数据都位于一行文本中,那么就没有理由不能使您的代码起作用。

听起来您不确定是否可以正常工作,因为您正在尝试将文本打印到控制台。 也许您的控制台未设置为呈现UTF-8编码的文本? 也许您的控制台字体没有足够的标志符号来覆盖该字体?

您可以尝试以下两种方法:

  1. 而不是将文本写入控制台,而是将其保存到文件中。 然后使用hexdump -C类的命令(在* nix系统上,我不知道如何在Windows中执行此操作),并查看二进制表示形式,以确保所有期望的字符都在那里。

  2. 将数据保存到文本文件,然后在Web浏览器中将其打开,因为浏览器可能比控制台具有更丰富的字体支持。

如果仍然怀疑自己读取了错误的远程数据,则可以通过JSON验证器运行检索到的文本,以确保确定。

请尝试以下方法:“ ISO-8859-1”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM