Заменитель строки - PullRequest
       7

Заменитель строки

1 голос
/ 26 августа 2010

Я сохранил свой скрипт в кодировке UTF-8.

Я изменил свою кодовую страницу в Windows на 65001.

Я на питоне 2.6

Скрипт № 1

# -*- coding: utf-8 -*-
print u'Español'
x = raw_input()

Сценарий № 2

# -*- coding: utf-8 -*-
a = 'Español'
a.encode('utf8')
print a
x = raw_input()

Скрипт № 1, печатает слово штрафа без ошибок, Скрипт № 2 делает ошибку:

UnicodeDecodeError: кодек «ascii» не может декодировать байт 0xf1 в позиции 4: порядковый номер вне диапазона (128)

Я хочу иметь возможность печатать эту переменную без ошибок динамически, как в сценарии № 2. кодирование ('utf8') было упомянуто мне как эквивалент выполнения u'string '

Очевидно, это не потому, что выдает ошибки. Как я могу сделать это, ребята?

Ответы [ 2 ]

8 голосов
/ 26 августа 2010

Измените свой код следующим образом:

# -*- coding: utf-8 -*-
a = 'Español'
a = a.decode('utf8')
print a
x = raw_input()

Декодирование указывает, как строка должна быть читать , и возвращает значение.Внесение вышеуказанных изменений должно решить вашу проблему.

Проблема в том, что python хранит строку в виде списка байтов, независимо от кодировки файла.Важно то, как эти байты читаются , и именно это мы делаем, когда используем decode() и u''.

5 голосов
/ 26 августа 2010

Для сценария № 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...