Monotouchを使用したC#にISO-8859-1 Charsを表示します
-
18-09-2019 - |
質問
REST WebサービスからXMLファイルを読んで、それを解析し、uitableViewに詳細を表示しています。 XMLファイルはISO-8859-1としてエンコードされており、アクセント付き文字が含まれています。 TableViewに文字列を追加するだけで、ジャンクキャラクターが表示されるので、UTF8に変換しようとしましたが、疑問符に変換され、キャラクターが理解されていないことを意味します。
これがコードです:
foreach(XmlNode myNode in myNodeList)
{
Encoding isoEnc = Encoding.GetEncoding ("iso-8859-1");
string utfResult = Encoding.UTF8.GetString (isoEnc.GetBytes(myNode.InnerText));
_myCollection.Add(utfResult);
}
ここで何が起こっているのか、アクセントされたチャーを表示する方法はありますか?
解決
OK、問題が解決しました。私のエラーは、StreamReaderがデフォルトでISO-8859-1エンコードを扱うと仮定しているようです。 StreamReaderコンストラクターを次のように変更しました。
StreamReader reader = new StreamReader (response.GetResponseStream ());
に:
StreamReader reader = new StreamReader (response.GetResponseStream (), Encoding.GetEncoding("iso-8859-1"));
StreamReaderに正しいエンコーディングを期待するように指示することで、他のすべてが所定の位置に分類されます。
他のヒント
さて、UTF-8への「変換」は非常に疑わしいです。あなたは基本的に、あなたはXMLファイルよりもよく知っていると言っています - それは 請求 ISO-8859-1になるために、あなた 本当 UTF-8でエンコードされたことを知っています。それを信じる理由はありますか?
キャラクターの意図がわかっている場合は、ロギングを追加して、それらの文字のユニコード値(整数として)を示すことをお勧めし、それらを比較してください。 unicode.orgのコードチャート. 。次に、問題があるかどうかがわかります 表示 キャラクター、またはそもそもフィードからそれらを読んでいます。
所属していません StackOverflow