Форум сайта python.su
Здравствуйте. При попытке обработать через etree файл, содержащий русские символы, получаю исключение ‘UnicodeDecodeError: ’ascii' codec can't decode byte 0xd1 in position 947: ordinal not in range(128)'.
Код (ссылка на xml-ку рабочая):
xml_answer = urllib.urlopen('http://ws.audioscrobbler.com/2.0/?method=user.getlovedtracks&user=pOzit-tiV&api_key=b25b959554ed76058ac220b7b2e0a026&limit=50')
tree = etree.parse(xml_answer.read())
tree = etree.parse(xml_answer.read().decode('utf-8'))
tree = etree.parse(xml_answer.read().encode('utf-8'))
Офлайн
В какой кодировке исходный документ вы смотрели?
Офлайн
<?xml version=“1.0” encoding=“utf-8”?> — юникод.
Офлайн
Извиняюсь, но у меня аналогичная ситуация.
$ python pyopenGL.py
Traceback (most recent call last):
File “pyopenGL.py”, line 61, in <module>
GLUT.glutCreateWindow( u'OpenGL демонстрация' )
ctypes.ArgumentError: argument 1: <type ‘exceptions.UnicodeEncodeError’>: ‘ascii’ codec can't encode characters in position 7-18: ordinal not in range(128)
Я вообще скопировал текст в Geany из браузера, потом из Geany в Geany и всё одно и то же. Если убираю u, то программа запускается, но кириллица крокозябрами становится
Офлайн
скрипт в какой кодировке сохранен?
#coding:utf-8 указано?
Офлайн
igor.kaistКонечно указано. Вот ссылка на источник, откуда я этот скрипт взял:
скрипт в какой кодировке сохранен?
#coding:utf-8 указано?
Офлайн
Я со своей проблемой разобрался если что.
Нужно было просто:
tree = etree.parse(xml_answer)
без read(). Плохо читал документацию просто :)
Офлайн
igor.kaist, с черепашкой помог мне, может всё же разберёшься с кодировкой? Самому мне не осилить. Пожалуйста!
Офлайн
Сделай просто decode('cp1251'), оно его расшифрует в системный UTF8.
Или когда создаёщь парсер укажи ему кодировку.
Отредактировано (Апрель 4, 2010 00:01:52)
Офлайн
likinНичего я ещё этого не знаю, и это мне пока только усугубляет . Почему такая бяка только с GLUT я не понимаю. Я нашёл для разборок с GL pygtkglext, там никаких плясок с бубном вокруг кодировок не нужно, достаточно одной строчки вверху, как и везде: # coding:utf-8. Кстати этот виджет можно использовать в составе окна gtk, хотя меня это не очень спасает, так как мне для начала легче осваивать wx.
Сделай просто decode('cp1251'), оно его расшифрует в системный UTF8.
Или когда создаёщь парсер укажи ему кодировку.
Офлайн