Найти - Пользователи
Полная версия: lxml и юникод
Начало » Python для новичков » lxml и юникод
1
pfc
Здравствуйте. При попытке обработать через 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'))
Все равно то же самое исключение. Что делать?
igor.kaist
В какой кодировке исходный документ вы смотрели?
pfc
<?xml version=“1.0” encoding=“utf-8”?> — юникод.
leonid_10
Извиняюсь, но у меня аналогичная ситуация.

$ 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, то программа запускается, но кириллица крокозябрами становится
igor.kaist
скрипт в какой кодировке сохранен?
#coding:utf-8 указано?
leonid_10
igor.kaist
скрипт в какой кодировке сохранен?
#coding:utf-8 указано?
Конечно указано. Вот ссылка на источник, откуда я этот скрипт взял:
http://forum.script-coding.info/viewtopic.php?id=2538
pfc
Я со своей проблемой разобрался если что.

Нужно было просто:
tree = etree.parse(xml_answer)

без read(). Плохо читал документацию просто :)
leonid_10
igor.kaist, с черепашкой помог мне, может всё же разберёшься с кодировкой? Самому мне не осилить. Пожалуйста!
likin
Сделай просто decode('cp1251'), оно его расшифрует в системный UTF8.
Или когда создаёщь парсер укажи ему кодировку.
leonid_10
likin
Сделай просто decode('cp1251'), оно его расшифрует в системный UTF8.
Или когда создаёщь парсер укажи ему кодировку.
Ничего я ещё этого не знаю, и это мне пока только усугубляет . Почему такая бяка только с GLUT я не понимаю. Я нашёл для разборок с GL pygtkglext, там никаких плясок с бубном вокруг кодировок не нужно, достаточно одной строчки вверху, как и везде: # coding:utf-8. Кстати этот виджет можно использовать в составе окна gtk, хотя меня это не очень спасает, так как мне для начала легче осваивать wx.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB