最初のルール: XML ドキュメントで使用されているエンコーディングを推測しないでください。XML ドキュメントを解析するには、常にバイト ストリームを使用します。
InputStream inputStream= new FileInputStream(this.xmlConfig);
InputSource is = new InputSource(inputStream);
saxParser.parse(is, handlerConfig);
それが機能しない場合は<?xml version=".." encoding="UTF-8" ?>
、XML の (または何でも) が間違っているため、そこから取得する必要があります。
2 番目のルール:ターゲット (結果) ドキュメントで使用されているエンコーディングをサポートするツールを使用して結果を検査してください。ありますか?
3 番目のルール: ソース ドキュメントのバイト値を確認します。お気に入りの HEX エディター/ビューアーを起動して、コンテンツを調べます。たとえば、エンコーディングが UTF-8 の場合、文字Ä
はバイト シーケンスである必要があります。0xC3 0x84
ルール 4: 正しくないように見える場合は、常に UTf-8 ソースが ISO-8859-1 ソースとして表示または解釈されているのではないかと疑ってください。UTF-8 ソースの 1 番目と 2 番目のバイトをISO 8859-1 コード チャートと比較して、これを確認します。
アップデート:
UNICODE 文字ä
(発音記号付きのラテン小文字 a、U+00E4) のバイト シーケンスは 0xC3 0xA4
、UTF-8 エンコーディングです。ISO-8859-1 エンコーディングのみを理解する (またはソースを解釈するように構成されている) 表示ツールを使用する場合、最初のバイト0xC3
は文字Ã
であり、2 番目のバイトは文字¤
または通貨記号 (Unicode U+00A4 )、円のように見える場合があります。
したがって、Android の「TextView」は、入力を ISO-8859-1 ストリームとして解釈しています。それを変更できるかどうかはわかりません。ただし、解析結果が文字列またはバイト配列である場合は、それを ISO-8859-1 ストリーム (またはバイト配列) に変換してから、"TextView" に渡すことができます。