Кодирование кода кодирования Unicode Python не в диапазоне <128> с знаком Euro

Я должен прочитать XML-файл на Python и захватить различные вещи, и я столкнулся с разочаровывающей ошибкой с Unicode Encode Error, которую я не мог понять даже при поиске в Google.

Вот фрагменты моего кода:

#!/usr/bin/python # coding: utf-8 from xml.dom.minidom import parseString with open('data.txt','w') as fout: #do a lot of stuff nameObj = data.getElementsByTagName('name')[0] name = nameObj.childNodes[0].nodeValue #... do more stuff fout.write(','.join((name,bunch of other stuff)) 

Это впечатляюще сбой, когда запись имени, которую я обрабатываю, содержит знак Euro. Вот ошибка:

 UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 60: ordinal not in range(128) 

Я понимаю, почему знак Euro подведет его (потому что он на 128, верно?), Но я думал, что нужно делать # кодирование: utf-8 исправит это. Я также попытался добавить .encode (utf-8), чтобы вместо этого выглядело имя

 name = nameObj.childNodes[0].nodeValue.encode(utf-8) 

Но это тоже не работает. Что я делаю не так? (Я использую Python 2.7.3, если кто-то хочет знать)

РЕДАКТИРОВАТЬ: Python вылетает в строке fout.write () – он пройдет отлично, где поле имени похоже:

 <name>United States, USD</name> 

Но будет дерьмо на поля имени, например:

 <name>France, € </name> 

2 Solutions collect form web for “Кодирование кода кодирования Unicode Python не в диапазоне <128> с знаком Euro”

когда вы открываете файл на python, используя open встроенную функцию, вы всегда будете читать файл в ascii. Чтобы получить доступ к нему в другой кодировке, вам необходимо использовать кодеки:

 import codecs fout = codecs.open('data.txt','w','utf-8') 

Похоже, вы получаете данные Unicode из вашего синтаксического анализатора XML, но вы не кодируете его, прежде чем записывать его. Вы можете явно закодировать результат, прежде чем записывать его в файл:

 text = ",".join(stuff) # this will be unicode if any value in stuff is unicode encoded = text.encode("utf-8") # or use whatever encoding you prefer fout.write(encoded) 
  • python regex разделяет any \ W + с некоторыми исключениями
  • Как удалить строку unicode из списка
  • Как получить IDLE, чтобы принять вставку символов Юникода?
  • Фиксация ошибочных строк Unicode
  • Заменить специальные символы эквивалентом ASCII
  • Как заставить интерпретатор python правильно обрабатывать символы, отличные от ASCII, в строковых операциях?
  • Как правильно разобрать HTML в кодировке UTF-8 в строки Unicode с помощью BeautifulSoup?
  • Преобразование в Emoji
  •  
    Interesting Posts for Van-Lav

    Преобразование строки Unicode в китайский символ

    Как документировать исключение, используя Sphinx

    Отсканированное изображение на рабочем столе соответствует оригинальному изображению с использованием OpenCV и SIFT / SURF

    Задачи, связанные с сельдерием, с часовым поясом

    Многопроцессорность python: некоторые функции не возвращаются, когда они полны (слишком большой материал очереди)

    Как попытаться, за исключением операции с нелегальной матрицей из-за сингулярности в NumPy

    python twitter Api () не найдена ошибка

    Может ли порожденный процесс взаимодействовать с «основным» MPI-коммуникатором

    ImportError: Ошибка загрузки DLL:% 1 не является допустимым приложением Win32 для Python Matplotlib

    Flask: RESTful API и SocketIO Server

    Корпус переключателя Python

    Использование Beautiful Soup для преобразования атрибутов CSS в отдельные атрибуты HTML?

    Могу ли я построить массив num-object zero-d из его значения в одном выражении?

    Получить список пакетов python, используемых проектом Django

    Администратор Django вызывает проверку CSRF

    Python - лучший язык программирования в мире.