Python2文件中如果未指定编码,在执行过程中会报错:
#!/usr/bin/python
print "你好"
File "test2.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file test2.py on line 2, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了
然而,当控制台的默认编码方式不为utf-8时,就会出现问题:
python test2.py
浣犲ソ
解决方法如下:
1.将输出str转为输出unicode:
#!/usr/bin/python
#coding=utf-8
print "你好"
print "你好".decode('utf-8')
此时输出为:
浣犲ソ
你好
2.更改控制台的活动编码页
输入chcp,回车,查看活动代码页
可以通过chcp命令查看cmd的编码设置,GBK2312的代码页编号是936,然后改成utf-8的编码即可
输入 chcp 65001即可
倘若控制台出现以下问题:
Traceback (most recent call last):
File "test2.py", line 4, in <module>
print "你好"
IOError: [Errno 22] Invalid argument
说明控制台不支持65001代码页
3.将输出str先解码为unicode再编码为与控制台相同的编码格式
因为控制台的编码为GBK,我们也将此输出编码格式指定为GBK
#!/usr/bin/python
#coding=utf-8
print "你好"
print "你好".decode('utf-8').encode('GBK')
此段代码的输出即为:
浣犲ソ
你好