2009-08-31 3 views
0

У меня есть XML-документ, который может иметь в нем данные с кодировкой shift-jis, и я пытаюсь его проанализировать с использованием объекта NSXMLParser.Как декодировать сдвинутые jis-данные в XML-документе с использованием Cocoa (iPhone)

Обычно я предполагаю, что документ закодирован в UTF8, и все в порядке - знает ли кто-нибудь, если/как я могу определить, является ли элемент кодировкой shift-jis, а затем как его декодировать?

Благодаря

ответ

1

XML-документ является UTF-8 кодируются, если он не имеет декларацию XML, указав в противном случае, например:

<?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 или transcoding на bytes вручную с Shift-JIS в UTF-8 перед впитать его в парсер.