Моя цель - написать XML-файл с несколькими тегами, значения которых указаны на региональном языке. Я использую Python для этого и использую IDLE (Pythong GUI) для программирования.UnicodeEncodeError при записи данных в xml-файл
В то время как я пытаюсь написать слова в файле XMLs он дает следующее сообщение об ошибке:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
На данный момент, я не использую любую библиотеку XML писатель; вместо этого я открываю файл «test.xml» и записываю данные в него. Эта ошибка встречается в строке: f.write(data)
Если я заменил вышеприведенный оператор записи на инструкцию печати, он корректно распечатает данные в оболочке Python.
Я читаю данные из файла Excel, который не находится в форматах кодировки UTF-8, 16 или 32. Это в другом формате. cp1252 правильно считывает данные.
Любая помощь в получении этих данных, записанных в файл XML, будет высоко оценена.
Спасибо за такой быстрый ответ. :) Я фактически сделал ту же операцию, пока получал ошибку ... Файл «C: \ test.py», строка 64, в основном uData = items.decode ('cp1252') Файл «C : \ Python26 \ lib \ encodings \ cp1252.py ", строка 15, в декоде return codecs.charmap_decode (вход, ошибки, decoding_table) UnicodeEncodeError: кодек ascii не может кодировать символы в позиции 0-4: порядковый номер в диапазоне (128) Я не понял, почему это происходит. Вероятно, «cp1252» может не соответствовать фактическому формату, который будет использоваться для декодирования. Что я могу сделать в таком случае? :( – Bobby
Мы можем закрыть эту тему. Я решил проблему. Фактически данные, которые у меня были, были уже данными в Юникоде. Его нельзя было расшифровать. Однако для записи в файле XML я использовал следующий код, который исправил мою проблему . import cgi dataToWrite = cgi.escape (data) .encode ("ascii", "xmlcharrefreplace") Тонны благодарности за помощь. – Bobby