使用pyinstaller编译后,序数> 128的Unicode字符将无法打印

时间:2018-11-28 20:34:36

标签: python-2.7 unicode pyinstaller

我有以下内容:

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 unicode的使用方法,但仍然很困惑。

编辑:为澄清起见,我对为什么在之前而不是之后

编译的原因感到困惑

1 个答案:

答案 0 :(得分:0)

好的,所以我找到了答案。众所周知,python对编码感到困惑,喜欢默认为ascii。我相信添加初始u是如何显式声明编码的方式,但我想不是吗?无论如何,将其修改为

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

解决了。