Символ Unicode с порядковым номером> 128 не будет печататься после компиляции с помощью pyinstaller - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть следующее:

blocky = u'\u2588'
print blocky

Когда я запускаю его в командной строке, все в порядке:

# python foo.py
█

Затем я запускаю pyinstaller foo.py.Нет ошибокКогда я запускаю исполняемый файл, я получаю эту ошибку:

# ./foo
Traceback (most recent call last):
  File "testall.py", line 2, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2588' in position 0: ordinal not in range(128)
[8029] Failed to execute script testall

Я прочитал инструкции по юникоду Python и все еще в замешательстве.

Редактировать: Просто чтобы уточнить, меня особенно смущает, почему он работает до компиляции, но не после

1 Ответ

0 голосов
/ 28 ноября 2018

ОК, так что я нашел ответ.По-видимому, известно, что python запутывается в кодировках и любит по умолчанию использовать ascii.Я полагал, что добавление начального u было как явно объявить кодировку, но я не думаю, что?Во всяком случае, изменение его на

blocky = u'\u2588'
print blocky.encode("utf-8")

решило это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...