Windows终端输出中文问题:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
print(s1)
上面的代码指定了字符编码为 UTF-8
,但是在 windows
上的 Dos命令行窗口
执行这个脚本时,输出的不是中文,而是乱码。
C:\Users\Administrator>python D:/1.py
涓枃
这是因为我们输出的是 UTF-8
的格式的,但是 Dos命令行窗口
是以 GBK
的格式去显示的,所以输出的中文是乱码。
为了能够输出中文,可以把
UTF-8
编码转换成 GBK
编码。
过程:先把
"utf-8"
解码成 unicode
,在把 unicode
编码成 GBK
。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
# 先通过 "decode" 将 "utf-8" 解码成 "unicode" , 解码需要指定原来是什么编码.
s2_unicode = s1.decode("utf-8")
# 在通过 "encode" 将 "unicode" 编码成 "gbk" , 编码需要指定要变成什么编码.
s3_gbk = s2_unicode.encode("gbk")
print(s3_gbk)
运行结果:
C:\Users\Administrator>python D:/1.py
中文
还有一种方法:
可以把 UTF-8
解码成 unicode
,然后 windows
的终端会自动将 unicode
转换成 GBK
。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s1 = "中文"
s1_unicode = s1.decode("utf-8")
# 输出时会转换成 "gbk" 编码
print(s1_unicode)
运行结果:
C:\Users\Administrator>python D:/1.py
中文
注:上面使用的Python版本是 Python 2.7.2
。
C:\Users\Administrator>python -V
Python 2.7.2
在Python3.5之后,就对上面的整个过程做了一个优化,如果是 UTF-8
的编码可以直接将它转成 GBK
的编码,不用先主动转换成 unicode
了,而是Python内部给你进行转换。
注:Python3中移除了 unicode
类型。