shift-jis でエンコードされたデータが含まれている可能性のある XML ドキュメントがあり、NSXMLParser オブジェクトを使用して解析しようとしています。
通常、ドキュメントはUTF8でエンコードされており、すべて問題ないと思います-要素がshift-jisでエンコードされているかどうかを判断できるかどうか、およびそれをデコードする方法を知っている人はいますか?
ありがとう
shift-jis でエンコードされたデータが含まれている可能性のある XML ドキュメントがあり、NSXMLParser オブジェクトを使用して解析しようとしています。
通常、ドキュメントはUTF8でエンコードされており、すべて問題ないと思います-要素がshift-jisでエンコードされているかどうかを判断できるかどうか、およびそれをデコードする方法を知っている人はいますか?
ありがとう
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 にバイトをトランスコードしてから、パーサーが役立つはずです。