ValdikSS / blockcheck

Russian ISP blocking type checker NOTE: NOT WORKING CURRENTLY. ВНИМАНИЕ: НЕ РАБОТАЕТ НА ТЕКУЩИЙ МОМЕНТ
MIT License
1.37k stars 143 forks source link

Пожалуйста уберите лишние красивости из UTF-8 #10

Closed ache closed 10 years ago

ache commented 10 years ago

Я понимаю, модно, но не у всех Linux, и экзотические UTF-8 символы в KOI8-R питон перекодировать не может, как ни старается: File "blockcheck.py", line 115, in test_dns print("[\u2713] DNS записи не подменяются") File "blockcheck.py", line 48, in print builtins.print(_args, *_kwargs) File "/usr/local/lib/python3.3/encodings/koi8_r.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\u2713' in position 1: character maps to

ValdikSS commented 10 years ago

У вас что, локаль в системе KOI8-R?

ache commented 10 years ago

Во FreeBSD дефолтом KOI8-R, с UTF-8 есть проблемы в некоторых местах.

ValdikSS commented 10 years ago

Ужас какой. А что вы делаете, когда вам в консоли нужно отобразить, скажем, английский, русский и японский языки? В общем, это явно не проблемы скрипта. Неюникодная консоль в 2014 году — просто позор.

ache commented 10 years ago

В скрипте только отдельные символы, остальное умный питон сам конвертит в системную локаль, например этот символ: print("[\u2713] DNS записи не подменяются")

ache commented 10 years ago

Юникодную консоль сделать можно, но тогда провиснет юникодная сортировка которая просто не написана. И это всё перенастраивать в любом случае.

ValdikSS commented 10 years ago

Простите, но я менять не буду. Вам, вероятно, нужно написать свой codec, который будет игнорировать ошибки энкода (errors='ignore')

ache commented 10 years ago

Всё частично решилось через env LANG=ru_RU.UTF-8 python3.3 blockcheck.py | iconv -f UTF-8 -t KOI8-R вместо спецсимволов в квадратных скобках вопросики конечно

ValdikSS commented 8 years ago

Исправлено.