[英]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.