要約すると、「ñ」に変換される「\ u00c3\u00b1」などのUnicode文字を含むJSON形式のデータを含むHTTPWeb応答を取得します。代わりに、これらの文字は、私が使用しているJSONパーサーによって「ñ」に変換されます。私が探している動作は、それらの文字が「ñ」に変換されることです。
次のコードを取得して実行します...
string nWithAccent = "\u00c3\u00b1";
Encoding iso = Encoding.GetEncoding("iso8859-1");
byte[] isoBytes = iso.GetBytes(nWithAccent);
nWithAccent = Encoding.UTF8.GetString(isoBytes);
nWithAccentは「ñ」を出力します。これが私が探している結果です。上記のコードを取得し、上記と同じ文字を含む以下の「response_body」変数で使用しましたが(Visual Studio 2008 Text Analyzerを使用して確認できたものから)、同じ結果は得られませんでした...何もしません文字「\u00c3\u00b1」。
私のアプリケーションでは、JSON形式でデータを取得する外部システムに対して次のコードを実行します。Visual Studioのテキストアナライザーを使用して「response_body」変数を調べると、ñの代わりに「\ u00c3\u00b1」が表示されます。たとえば、「niño」という単語は、テキストアナライザでは「ni \ u00c3\u00b1o」と表示されます。
using (HttpWResponse = (HttpWebResponse)this.HttpWRequest.GetResponse())
{
using (StreamReader reader = new StreamReader(HttpWResponse.GetResponseStream(), Encoding.UTF8))
{
// token will expire 60 min from now.
this.TimeTillTokenExpiration = DateTime.Now.AddMinutes(60);
// read response data
response_body = reader.ReadToEnd();
}
}
次に、「\ u00c3」を「Ã」に、「\ u00b1」を「±」に置き換え、最終結果を「ñ」ではなく「ñ」にするオープンソースのJSONパーサーを使用します。JSONパーサーに何か問題がありますか、それとも応答ストリームに間違ったエンコーディングを適用していますか?応答のヘッダーは、文字セットがUTF-8であることを示しています。返信ありがとうございます!