Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 1, 2015 15:21:18

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

2ur1st
но при таком преобразование, косяк не вспывет
>>> 'schreitmüller'.encode(sys.stdout.encoding)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    'schreitmüller'.encode(sys.stdout.encoding)
  File "C:\org\Python34\lib\encodings\cp1251.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character '\xfc' in position 8: character maps to <undefined>
>>> 'schreitmller'.encode(sys.stdout.encoding)
b'schreitmller'
>>> 
Не нравится, можете фильтровать посимвольно, только хорошо разберитесь сначала что именно в Питоне называется юникодом.

Отредактировано Shaman (Июнь 1, 2015 15:25:46)

Офлайн

#2 Июнь 1, 2015 15:32:48

2ur1st
Зарегистрирован: 2015-06-01
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

Shaman
'schreitmüller'.encode(sys.stdout.encoding)
хорошо, спасибо

Офлайн

#3 Июнь 1, 2015 16:52:23

sander
Зарегистрирован: 2015-02-19
Сообщения: 317
Репутация: +  53  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

2ur1st
unicodedata

Офлайн

#4 Июнь 2, 2015 00:39:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10003
Репутация: +  857  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

2ur1st
я смоделирую ситуацию, есть список слов, я их прохожу циклом и делаю с ними какие нибудь преоброзвания, и во время этого валиться цикл, из за ошибки кодировки.
я хотел бы заранее отфильтровать этот список, что бы в нем не было таких слов, но это ошибка вываливаеться только при print(), а хотел бы не засорять вывод, а сделать как то более красиво

Он не даёт выводить только в консоль, потому что в кодировке cp1251 нет символа ü.
Это проблема винды: она в 21-м веке использует кодировку 20-го для консоли.
Поставь себе линукс, там таких проблем нет.

Можно и отлавливать исключение, и просто кодировать:
>>> print('schreitmüller'.encode('cp1251', 'ignore'))
b'schreitmller'
>>> print('schreitmüller'.encode('cp1251', 'replace'))
b'schreitm?ller'
>>> print('schreitmüller'.encode('cp1251', 'xmlcharrefreplace'))
b'schreitm&#252;ller'
>>>



Отредактировано py.user.next (Июнь 2, 2015 00:40:24)

Офлайн

#5 Июнь 2, 2015 00:58:13

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Проверка коректности кодировки с слове

Винда у нас ещё может и в cp866 выдавать, по ситуации.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version