0

shift-jis でエンコードされたデータが含まれている可能性のある XML ドキュメントがあり、NSXMLParser オブジェクトを使用して解析しようとしています。

通常、ドキュメントはUTF8でエンコードされており、すべて問題ないと思います-要素がshift-jisでエンコードされているかどうかを判断できるかどうか、およびそれをデコードする方法を知っている人はいますか?

ありがとう

4

1 に答える 1

1

XML ドキュメントは、別の方法で宣言されている XML 宣言がない限り、UTF-8 でエンコードされます。たとえば、次のようになります。

<?xml version="1.0" encoding="shift_jis"?>

また:

<?xml version="1.0" encoding="cp932"?>

XML パーサーは、XML 宣言で指定されたエンコーディングを検出する必要があります。(一部のパーサーは一部の CJK コーデックをサポートしていない可能性があるため、エラーが発生しますが、AIUI NSXMLParser は問題ないはずです。)

そのような指定されたエンコーディングを持たない Shift-JIS バイト シーケンスを含むファイルを取得した場合、または一部の要素に Shift-JIS バイト シーケンスを含み、他の要素に UTF-8 を含むファイルがある場合、そのファイルは整形式ではありません。これはまったく XML 文書ではなく、パーサーはそれを読み取りません。

エンコーディング宣言が欠落している場合は、ソース側でそれを修正する必要がありますが、それまでの間、適切な XML 宣言をハッキングするか、手動でシフト JIS から UTF-8 にバイトをトランスコードしてから、パーサーが役立つはずです。

于 2009-08-31T13:56:35.900 に答える