python-2.7 - 使用 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 对编码感到困惑,并且喜欢默认为 ascii。我相信添加首字母u
是如何明确声明编码但我猜不是?无论如何,将其修改为
blocky = u'\u2588'
print blocky.encode("utf-8")
解决了。
推荐阅读
- python - 哪个函数更适合从字符串中删除字符 - 时间复杂度
- mysql - MySQL root user password change automation
- pine-script - TradingView 基于多个条件的松树图箭头
- python - Django 应用程序无法使用“firebase-admin”库在 AWS ElasticBeanstalk 上部署
- google-cloud-platform - 向谷歌云中的大查询表插入数据时出错?
- ruby-on-rails - 上限部署在预编译资产上失败,但上限
部署:预编译:资产工作 - git - 这个 Git 设置来自哪里?
- php - 尝试根据不同的表格打印编写计数查询循环
- objective-c - 如何将 NSMutable 数组附加到现有文件
- r - How to completely remove renv from an R statistics program