1

我在阅读与 URL 连接的 InputStream 文本表单时遇到问题。我正在使用扫描仪阅读文本,但看起来没有文本格式。

这是代码

 connection = new URL(finalURL).openConnection();
 connection.connect();
 inStream =  connection.getInputStream();
 in = new Scanner(inStream);
 while(in.hasNextLine()){
   line = in.nextLine();
   System.out.println(line);
}

我省略了 try catch 子句。输出如下:
µtÂ÷BPv§2d
ŐüUŘ}ĎÓăR

虽然它应该是这样的:
06MAGNA,20121109,0.26,0.27,0.25,0.27,37820
08OCTAVA,20121109,0.73,0.75,0.73,0.73,12244

当我将它作为 txt 文件保存在磁盘上然后使用 Scanner 时,它工作正常,但通过 URL 却不行。谁能帮我?

4

1 回答 1

1

我认为它的发生是因为输入流中的字符集和扫描仪的默认字符集不同。尝试CharsetScanner构造函数中传递。

         in = new Scanner(inStream, "UTF-8");//set the appropriate charset

编辑:您可以使用connection.getContentEncoding().

将您的扫描仪实例更新为:

         in = new Scanner(inStream, connection.getContentEncoding());

EDIT1:要处理gzip输入流,请使用GZIPInputStream如下:

      inputStream = new GZIPInputStream(connection.getInputStream());
于 2012-11-10T16:12:37.237 回答