Главная страница > Вопрос
Вопрос
cp1251 -> utf-8
помогите, пожалуйста, с кодировкамы на python 2
в начале скрипта стоит
# -*- coding: utf-8 -*-

получаю из внешнего источника данные в windows-1251 и хочу преобразовать в uft-8
как мне это сделать?

text=text.decode("cp1251") приводит к такой ошибке:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-12: ordinal not in range(128)

а

text=text.encode("utf-8") приводит к такой ошибке:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 4: ordinal not in range(128)
кодировки | программирование | python 25.08.10 Автор: Грузин
Ответы
1 из 1
с русским текстом в питоне 2, действительно, есть некоторые проблемы.
во-превых, есть варианты:
str = str.decode('cp1251')
s = s.decode( 'windows-1251' )

во вторых, вот эта штука:
# -*- coding: utf-8 -*-
влияет на содержимое строк и вместо
\xcf. \xde\xf8\xea\xe5\xe2\xe8\xf7 \xc4\
в строках может оказаться
\u0430\u0440\u0430\u0433\u0432

попробуйте определить кодировку через
import chardet
chardet.detect(someString)
и сообщите, правильно ли вы пишете, что у вас cp1251

а вообще, когда вы приняли текст из какого-то источника, то может оказаться и вовсе не str объектом, а unicode, поэтому, проверьте ещё и тип входящей строки.
25.08.10 Автор: aristov1aa
Это может быть интересно
php - utf-8/cp1251 - winXP/linux
Изъятие переменных
mysql_query("set CHARACTER SET cp1251"); для insert
А почему спецификатор /i не работает с русскими буквами?
Кодировка python скриптов в IIS
Войти
Просмотреть Вопросы и ответы в версии: для мобильных устройств | для ПК
©2014 Google - Политика конфиденциальности - Справка