Я сохранил script в кодировке UTF-8.
Я изменил свою кодовую страницу на окна до 65001.
Я на python 2.6
Script # 1
# -*- coding: utf-8 -*-
print u'Español'
x = raw_input()
Script # 2
# -*- coding: utf-8 -*-
a = 'Español'
a.encode('utf8')
print a
x = raw_input()
Script # 1, печатает слово "штраф" без ошибок, script # 2 делает ошибку:
UnicodeDecodeError: кодек 'ascii' не может декодировать байт 0xf1 в позиции 4: порядковый номер не в диапазоне (128)
Я хочу иметь возможность печатать эту переменную без ошибок динамически, как в script # 2. кодировка (utf8) была упомянута мне как эквивалент выполнения u'string '
Очевидно, это не потому, что оно порождает ошибки. Как я могу это сделать?
Измените код на следующее:
# -*- coding: utf-8 -*-
a = 'Español'
a = a.decode('utf8')
print a
x = raw_input()
Декод указывает, как следует читать строку, и возвращает значение. Внесение изменений выше должно решить вашу проблему.
Проблема заключается в том, что python хранит строку в виде списка байтов, независимо от кодировки файла. Важно то, как эти байты читаются, и это то, что мы делаем, когда используем decode()
и u''
.
Для script # 2:
a = 'Español' # In Python2 this is a string of bytes
a = a.decode('utf-8') # This converts it to a unicode string
print(a)
u
? Я привык к Python 3.