2012-02-01 1 views
0

Я пытался декодировать следующую строку и получить ошибку.как декодировать следующую строку

item = lh.fromstring(items[1].text).text_content().strip().decode('utf-8') 

File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode 
return codecs.utf_8_decode(input, errors, True) 

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

Любая идея, в чем не так?

items[1].text = <strong>₨ 18,500 </strong> 
repr(items[1].text) = u'\u20a8 18,500' 
+2

Пожалуйста, разместите значение 'items [1] .text', чтобы мы могли вам помочь. –

+1

Соответствующий http://www.fileformat.info/info/unicode/char/20a8/index.htm –

+0

₨ 18,500

ответ

3

То, что вы вызвали decode, но ваша ошибка цитируется encode - это ключ к тому, что ваша строка является Unicode для начала, а не для строки. decode предназначен для преобразования из байтов в Юникод, encode для другого.

+2

python3 делает это более понятным, там у вас есть 'bytes' с расшифровкой метода и' str' с помощью метода encode. – steabert

+0

Извините, ребята, я смотрел его совершенно наоборот –

1

Возможно, вы пытаетесь декодировать уже декодированную (Unicode) строку. Итак, оставьте .decode('utf-8'), и он должен работать. Если вы не имеете в виду что-то еще путем «декодирования» (возможно, вы хотите, чтобы строка кодировала строку определенной кодировке).

 Смежные вопросы

  • Нет связанных вопросов^_^