首页 > 解决方案 > 使用 pyinstaller 编译后,序数大于 128 的 Unicode 字符不会打印

问题描述

我有以下内容:

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 how-to 并且仍然很困惑。

编辑:为了澄清,我特别困惑为什么它编译之前而不是之后

标签: python-2.7unicodepyinstaller

解决方案


好的,所以我找到了答案。很明显,python 对编码感到困惑,并且喜欢默认为 ascii。我相信添加首字母u是如何明确声明编码但我猜不是?无论如何,将其修改为

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

解决了。


推荐阅读