Найти - Пользователи
Полная версия: Проверка коректности кодировки с слове
Начало » Python для новичков » Проверка коректности кодировки с слове
1 2
Shaman
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'
>>> 
Не нравится, можете фильтровать посимвольно, только хорошо разберитесь сначала что именно в Питоне называется юникодом.
2ur1st
Shaman
'schreitmüller'.encode(sys.stdout.encoding)
хорошо, спасибо
sander
2ur1st
unicodedata
py.user.next
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'
>>>
Shaman
Винда у нас ещё может и в cp866 выдавать, по ситуации.
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