Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从InputStream读取UTF-8编码文本_Java_Url_Utf 8_Inputstream_Bufferedreader - Fatal编程技术网

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

Java 从InputStream读取UTF-8编码文本,java,url,utf-8,inputstream,bufferedreader,Java,Url,Utf 8,Inputstream,Bufferedreader,我在从输入流中读取所有日文/中文字符时遇到问题 基本上,我是从API检索JSON对象 下面是我的代码: try { URL url = new URL(string); BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),StandardCharsets.UTF_8)); result = br.readLine(); b

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

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

试试这个:“ISO-8859-1”

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

如果您正在从URL获取数据,并且您确实知道所获取的字节表示UTF-8编码的文本,并且整个数据适合一行文本,那么您的代码就没有理由不工作

听起来好像你不确定事情是否正常,因为你正试图将文本打印到你的控制台上。也许您的控制台未设置为呈现UTF-8编码文本?也许您的控制台字体没有足够的字形来覆盖字体

以下是两件您可以尝试的事情:

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

  • 将数据保存到文本文件中,然后在web浏览器中打开,因为浏览器的字体支持可能比控制台丰富得多


  • 如果您仍然怀疑读取的远程数据不正确,您可以通过JSON验证器运行检索到的文本,以确保。

    readLine()
    只读取一行文本?实际上,我可以检索整个JSON对象。所以我认为这不是问题所在。