如何使用UTF-16BE编码正确运行python脚本?

时间:2018-04-12 05:20:56

标签: python python-2.7 unicode encoding

我有一个以UTF-16BE编码的源文件# coding=UTF-16BE print "test utf-16"

python test.py

当我在bash中运行以下命令时:

MVC

我的终端没有打印出来。这是为什么?我该怎么处理呢?它取决于我的bash的默认编码吗?

2 个答案:

答案 0 :(得分:0)

我一直在寻找并最终通过bobince's answer in a similar question.澄清自己因为我使用UTF-16BE作为我的python源代码的编码方案,神奇的评论:

# coding=UTF-16BE

也以UTF-16BE编码。但是,因为UTF-16BE不兼容ASCII,所以python无法通过读取ascii中的注释来正确检测编码。结果,脚本无法正常运行。

答案 1 :(得分:0)

你应该使用类似的东西:

#!/usr/bin/python
# -*- coding: utf-16be -*-
第一行或第二行(重要位是coding:=(所以其他答案都可以,如果你放在首位)和编解码器。请参阅PEP 263了解语法。

您应该检查开始时是否没有BOM(在通用UTF-16上允许BOM,但在指定endianess时不允许)。编辑经常弄错。

但总的来说,我建议使用UTF-8作为代码编码:编辑器更好地支持它,它是Python3的默认设置。 UTF-8和UTF-16都只是Unicode的编码,所以支持应该是相同的。注意:真的Python2将使用UTF16内部编码(UCS2),Python3动态(每个字符串)选择UFT-8,UTF-16或UTF-32。但忘了内部,这是一个编辑问题。

注意:源编码不管执行(运行时)代码。读取和写入文件以及stdout的默认编码与代码无关,它们仅依赖于操作系统和环境。