1

現在、Xmlファイル(このアドレスからアクセスできます:http://mobilite.euroairport.com/services/getDepartureAirports?language = French )から空港のリストを抽出しようとしています。私の問題は、「デュッセルドルフ」に表示されるはずの「Ü」が読み取れないことです(つまり、IeやFirefoxで直接)。私は次のようなものを取得します:D□SSELDORFまたはD SSELDORFまたはD?SSELDORF

以下は、このファイルのエンコーディングを見つけるために使用したコードです(nは「DÜSSELDORF」を含む文字列です)。

        byte[] bytes = n.getBytes();            
        Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
        bytes = n.getBytes("ASCII");            
        Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
        bytes = n.getBytes("Cp1252");           
        Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
        bytes = n.getBytes("UTF-8");            
        Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
        bytes = n.getBytes("ISO8859_1");            
        Log.w("tagtag", (char) bytes[0] + " "+(char) bytes[1]+" "+(char) bytes[2]);
        bytes = n.getBytes("ISO8859_2");

そしてこれは結果です(Android用のLogcatで):

        10-08 09:41:30.557: W/tagtag(1506): D □ ン
        10-08 09:41:30.557: W/tagtag(1506): D ? S
        10-08 09:41:30.567: W/tagtag(1506): D ン S
        10-08 09:41:30.567: W/tagtag(1506): D □ ン
        10-08 09:41:30.577: W/tagtag(1506): D ン S
        10-08 09:41:30.637: W/tagtag(1506): D ン S

私の質問は、この文字列を読み込もうとしているときに間違えたのでしょうか、それともサーバーが原因で問題が発生したのでしょうか。

4

2 に答える 2

2

Definitleyサーバー/(データサービス)(設定ミスの問題)/バグ。

サーバーは、HTML/XML応答で次の行を返します。

Content-Type: application/xml;charset=UTF-8\r\n

xmlのバイトダンプを調べたところ、これがwiresharkが「DSSELDORF」を表す方法です。

D..SSELDORF

16進ダンプ内(16進値c2 9dについてはUTF-8コード表を参照):

44 c2 9d 53 53

これは次のようになります。

44 - D
53 - S

およびC29D

印刷不可能な文字としても知られている制御文字として解釈されます-したがって、「欠落している」U-これはlogcat出力も説明します。

于 2012-10-08T15:24:57.283 に答える
0

私は問題を見つけたと思います。Webサービスコードにアクセスできましたが、Webサービスのbddを更新するために使用されるファイルがANSIでエンコードされていることがわかりました。このファイルは、次のコードを使用して読み取られます。

InputStreamReader input = new InputStreamReader(new FileInputStream("vols"), "UTF-8");
BufferedReader buffer = new BufferedReader(input);

問題はここにあると思うので、クライアントにこのファイルのエンコーディングを変更するように依頼しますが、それが私の問題の唯一の理由であるかどうかはわかりません。

助けてくれてありがとう。

于 2012-10-17T12:55:42.223 に答える