繁体   English   中英

在python中使用UTF-16编码

[英]Using UTF-16 encoding in python

我正在尝试使用utf-16-le在python中编码非ascii字符,这是此代码的片段:

import os
import sys

def run():
    print sys.getdefaultencoding()
    reload(sys)
    sys.setdefaultencoding('utf-16-le')
    print sys.getdefaultencoding()
    test_dir = unit_test_utils.get_test_dir("utkarsh")
    dir_name_1 = '東京'
    ....
    ....

if __name__ == '__main__':
    run()

运行此代码时,这是看到的错误:

# /u/bin/python-qs /root/python/tests/abc.py -c  /root/test.conf 
  File "/root/python/tests/abc.py", line 27
SyntaxError: Non-ASCII character '\xe6' in file /root/python/tests/abc.py on line 27, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

如何解决? 我尝试将此行添加到文件的开头,但无济于事:

# -*- coding: utf-16-le -*-

这次的错误是:

# /u/bin/python-qs /root/python/tests/abc.py -c  /root/test.conf
  File "/root/python/tests/abc.py", line 2
    import os
import sys
...
...
if __name__ == '__main__':
    run()

    ^
SyntaxError: invalid syntax

编辑:

第27行:dir_name_1 ='东京'

在您显示的代码中,一切都差不多了。 您有一个以utf-8编码的源文件(如您对file命令结果的注释所述),因此该行

dir_name_1 = '東京'

实际上(当您使用Python 2.x时):

dir_name_1 = '\xe6\x9d\xb1\xe4\xba\xac' # utf8 for 東京

唯一的问题是,在第27行(您未显示)上,您正在使用该utf8编码的字符串做某事,可能试图在未指定任何编码的情况下将其(显式或隐式)转换为unicode,因此ascii被视为默认值和错误则正常,因为\\xe6不在ASCII范围内。 您应该使用dir_name_1.decode('utf8')显式解码字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM