1

URL に接続されたテキスト形式の InputStream の読み取りに問題があります。Scanner を使用してテキストを読み取っていますが、テキストの書式設定がないようです。

ここにコードがあります

 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 ファイルとしてディスクに保存し、スキャナを使用すると正常に動作しますが、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 に答える