2016-08-05 3 views
-1

私はこのXML(私はそれをコントロールしていない)持っている:OkHttp悪いエンコーディング

<?xml version="1.0" encoding="iso-8859-1" ?> 
    <test> 
     <text name="Café" /> 
    </test> 

をしかし、それは正しい結果返さない:

カフェ

私のコードは、例の基本です:http://square.github.io/okhttp/

ヘッダーの要求を返します:

HTTP/1.1 200 OK 
Content-Type: text/xml 
Last-Modified: Mon, 08 Aug 2016 02:41:08 GMT 
Accept-Ranges: bytes 
ETag: "1bbb4511ef1d11:0" 
Server: Microsoft-IIS/8.5 
X-Powered-By: ASP.NET 
Date: Mon, 08 Aug 2016 02:42:45 GMT 

答えて

1

は、私はあなたがエンコード= "UTF-8" は、設定に移動>>エディタ>>ファイルのエンコーディングを使用し、UTF-8にIDEのエンコードおよびプロジェクトのエンコーディングを変更すべきだと思います。

元画像

ex image

+0

既にうまいです – Josinaldo

0

OkHttpデフォルトハードコードUTF-8を使用しているので、サーバは符号化せずに応答しています。 XMLコード化文字列をStringとして読み取っている場合、OkHttpはXMLエンコーディングタグを無視します。

特に、éは、UTF-8では2バイトであり、iso-8859-1では1バイトです。

あなたは3つのオプション

1)UTF-8でエンコードするファイルを変更し、XMLエンコーディング属性を変更しています。応答ヘッダーで文字セットUTF-8を指定するのが理想的です(ただし、オプション)。

2)ファイルをiso-latin-1のままにしますが、応答のContent-Typeヘッダーに文字セットを戻します。

3)ファイルまたはヘッダーを制御できない場合は、エンコーディングヘッダーを使用して処理するためにXMLライブラリに提供する一連のバイトとして読み取る必要があります。

+0

ヘッダーで編集済み – Josinaldo