0

さて、私がやろうとしているのは、Webサービスから取得したデータを使用するJavaプログラムを作成することです。データを取得できますが、XMLドキュメントの形式であり、(Eclipse)コンソールに出力すると、すべての文字の間にスペースがあり、replaceAllメソッドが機能しません。コードの関連部分は以下のとおりです。

BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(webAdress).openStream()));
String XMLcode = reader.readLine();
XMLcode = XMLcode.concat(reader.readLine());
XMLcode = XMLcode.replaceAll(" ", "");
System.out.println(XMLcode); //in the finished program, I will do something with the data in the XML document.

結果は次のようになります-

þÿ < ? x m l  v e r s i o n = " 1 . 0 " e n c o d i n g = " U T F - 8 " ? >

続いて、私が探している実際のデータが続きます。一部のインターネット検索では、þÿはこれがテキストエンコーディングの問題であることを意味していましたが、UTF-8をUTF-16に変換するために見つけたすべての方法は役に立ちませんでした(ただし、þÿを??に変更します)。誰かがこれを修正する方法を知っているか、ファイルで利用可能である必要のないXMLを読み取る「標準的な」方法を知っていますか?

注-私は問題のWebサービスを作成しなかったため、Webサービスを変更できず、実際にどのように機能するかわかりません。

4

2 に答える 2

0

たぶん、次のことを試してみることをお勧めします。

new BufferedReader(new InputStreamReader(new URL(webAdress).openStream(), "UTF-16"));

次のコードを使用してテストできます。

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

public class CharsetChanging {

    public static void main(final String[] args) throws IOException {

        File infile = new File("/tmp/utf16.txt");

        FileInputStream inputStream = new FileInputStream(infile);

        Reader in = new InputStreamReader(inputStream, "UTF-16");

        int read;

        while ((read = in.read()) != -1) {
            System.out.print(Character.toChars(read));
        }

        in.close();
    }
}

new FileInputStream(infile)と置き換えるだけnew URL(webAdress).openStream()

于 2012-06-10T20:26:29.783 に答える
0

なぜあなたはしようとしないのですか

XMLcode = XMLcode.replaceAll("\s","")

于 2012-06-10T20:13:58.490 に答える