【发布时间】:2018-09-22 03:15:10
【问题描述】:
我有一个以 UTF-16BE 编码的源文件 test.py:
# coding=UTF-16BE
print "test utf-16"
当我在 bash 中运行以下命令时:
python test.py
我的终端没有打印出来。这是为什么?我应该如何处理?它是否依赖于我的 bash 的默认编码?
【问题讨论】:
标签: python python-2.7 unicode encoding
我有一个以 UTF-16BE 编码的源文件 test.py:
# coding=UTF-16BE
print "test utf-16"
当我在 bash 中运行以下命令时:
python test.py
我的终端没有打印出来。这是为什么?我应该如何处理?它是否依赖于我的 bash 的默认编码?
【问题讨论】:
标签: python python-2.7 unicode encoding
你应该使用类似的东西:
#!/usr/bin/python
# -*- coding: utf-16be -*-
在第一行或第二行(重要的位是coding、: 或=(所以其他答案都可以,如果你放在上面)和编解码器。见@语法为 987654321@。
您应该检查是否在开头没有 BOM(通用 UTF-16 上允许使用 BOM,但在指定字节顺序时不允许使用 BOM)。编辑经常弄错。
但总的来说,我建议使用 UTF-8 作为代码编码:编辑器更好地支持它,并且它是 Python3 的默认值。 UTF-8 和 UTF-16 都只是 Unicode 的编码,所以支持应该是一样的。注意:真正的 Python2 将在内部使用类似 UTF16 的编码(UCS2),Python3 动态(每个字符串)选择 UFT-8、UTF-16 或 UTF-32。但忘了内部,这是编辑的问题。
注意:源编码与执行(运行时)代码无关。读写文件和标准输出的默认编码与代码无关,它们只取决于操作系统和环境。
【讨论】:
\0 可能会停止源代码)。我正在寻找官方参考资料。
\0肯定有问题。
我一直在四处寻找,终于让bobince's answer in a similar question. 澄清了自己,因为我使用 UTF-16BE 作为我的 python 源代码的编码方案,神奇的评论:
# coding=UTF-16BE
也以 UTF-16BE 编码。但是,由于 UTF-16BE 不兼容 ASCII,python 无法通过读取 ascii 中的注释来正确检测编码。结果,脚本无法正常运行。
【讨论】: