Найти - Пользователи
Полная версия: преобразование unicode -> str
Начало » Python для экспертов » преобразование unicode -> str
1
rooty
Всем привет
Как можно преобразовать строку u'Слово' в ‘Слово’ ?

u'Слово\n'.decode('utf-8') - так ascii' codec can't encode characters in position 0-7: ordinal not in range(128)
u'Слово\n'.encode('utf-8') - так получается байтовая строка, но не похожая на “Слово”

Мне это нужно чтобы подсунуть в urllib.quote(), а он не понимает unicode
Нужная мне последовательность генерится в случае если вызывать urllib.quote('Слово'), но вот это слово надо как то получить из u'Слово'.
truporez
В первом случаем decode декодирует строку из указанной кодировки в уникод. И естественно, что попытка декодировать уникод-строку снова в уникод сказав, что это utf-8 строка ни к чему хорошему не приведет.

Во втором ты получаешь utf-8 строку из уникода. Если тебе нужна строка в однобайтовом представлении, указывай однобайтовую кодировку. Как вариант: u'Слово\n'.encode('cp1251')
rooty
Пытался и так:
u'Слово\n'.encode('cp1251')

Выдает:
'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
pasaranax
str(u“слово”) ?
truporez
в заголовке файла кодировка прописана? сам файл в указанной кодировке?
rooty
Да, дело оказалось в том что в заголовке не было прописано кодировки utf8, спасибо.
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