1

Bing API を使用して検索しようとすると、印刷できない文字が表示され、余分な情報が保持されていないように見えます。目標は、後で解析できるように、XML (UTF-8) 応答をテキスト ファイルとして保存することです。

私のコードは現在、次のようになっています。

    URL url = new URL(queryURL);

    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    BufferedWriter out = new BufferedWriter(new FileWriter(query+"-"+saveResultAs));
    String str = in.readLine();
    out.write(str);

    in.close();
    out.close();

「str」の内容をコンソールに送信すると、次のようになります。

代替テキスト

新しく作成されたローカル XML ファイルは次のようになります。

代替テキスト

str に余分な文字が含まれないように、UTF-8 テキストを変換するにはどうすればよいですか?

4

2 に答える 2

2

エンコーディングを事前に知っている場合は、

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));

ライターと同じ...ファイルを書き込んだ後の例では、UTF-8であると宣言しながら、プラットフォームのデフォルトでエンコードされています。

驚きを避けるために、XML 宣言からエンコーディングを読み取るのが賢明かもしれません。

後で使用するためにデータを保存するだけの場合は、とにかくエンコード/デコードする必要はありません。バイトを読み取って書き出すだけです。XML パーサーのエンコーディングを検出するタスクを保持します。

于 2011-01-09T11:00:04.647 に答える
1

XML パーサーがエンコード/デコードを処理し、適切な文字がフィードバックされます (たとえば、SAX パーサーはcharacters()メソッド コールバックを介してこれを行います)。あなたがする必要があるのは、それを適切なファイルに保存することです(おそらく適切なByte-Order-Mark で?)

于 2011-01-09T12:48:13.880 に答える