Найти - Пользователи
Полная версия: s.encode('cp1251') errors
Начало » Python для новичков » s.encode('cp1251') errors
1
severum
Еще раз про кодировки
Обычный русский текст перекодируется нормально, но при наличии всяких других символов постоянно получаю результат типа:
'charmap' codec can't encode character u'\xf3' in position 31: character maps to…
Чтобы с этим бороться написал себе функцию типа:
table = (
(u'\u0103', u“a”), #LATIN SMALL LETTER A WITH BREVE
(u'\u0131', u“i”), #LATIN SMALL LETTER DOTLESS I

(u'\xc0', u“A”), #LATIN CAPITAL LETTER A WITH GRAVE
(u'\xc1', u“A”), #LATIN CAPITAL LETTER A WITH ACUTE
(u'\xc4', u“A”), #LATIN CAPITAL LETTER A WITH DIAERESIS
(u'\xc9', u“E”), #LATIN CAPITAL LETTER E WITH ACUTE

(u'\xf3', u“o”), #LATIN SMALL LETTER O WITH ACUTE
(u'\xf6', u“o”), #LATIN SMALL LETTER O WITH DIAERESIS
(u'\xfa', u“u”), #LATIN SMALL LETTER U WITH ACUTE
(u'\xfc', u“u”), #LATIN SMALL LETTER U WITH DIAERESIS
)
for symb_in, symb_out in table:
s = s.replace(symb_in, symb_out)
return s
Вызываю ее перед перекодировкой и изредка добавляю что-нибудь в таблицу.
Но мне кажется, что это как-то не правильно…
o7412369815963
Он не может закодировать эти символы в cp1251 т.к. таблица cp1251 не содержит эти символы. Используйте utf-8.
severum
Спасибо, я в общем это понимаю..
Из-за utf-8 я не могу в половине случаев видеть, что происходит в виндовой консоли, т.к. мне не напечатать некоторые строчки на русском которые я обрабатываю.
Приходится просто писать в файл, а потом смотреть на каком этапе работа.
Это кажется обсуждалось (что то про chcp 65001 и т.д.)

Нет какой-нибудь готовой библиотеки которая умеет заменять одни визуально похожие буквы на другие для произвольной кодировки?
Чтобы были полные таблицы.
Андрей Светлов
unicode -> mbcs -> unicode -> cp866 ?
Способ замысловат, но должен сработать.
severum
ок. спасибо попробую
py.user.next
severum
Нет какой-нибудь готовой библиотеки которая умеет заменять одни визуально похожие буквы на другие для произвольной кодировки?
можешь использовать другую схему обработки ошибок
help(''.encode)
там есть встроенные, а можно свою сделать (несложно)
тогда определённые символы будут заменяться на нужные символы
попробуй xmlcharrefreplace

>>> u'абвabc'.encode('ascii', 'xmlcharrefreplace')
'абвabc'
>>>
(очень нехорошо, xml-ссылки заменяются форумом даже в теге code)
картинка
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