美文网首页生活不易 我用python
Python扩展之编码转换

Python扩展之编码转换

作者: 皓月的简书 | 来源:发表于2017-04-25 16:41 被阅读0次

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 类型。

相关文章

网友评论

    本文标题:Python扩展之编码转换

    本文链接:https://www.haomeiwen.com/subject/dclmzttx.html