python中的字符编码(一)

在Notepad++中新建一个文件命名为str_encode.py,我们想写像这样的代码:

print("你好,祝你学习愉快!")

会发现,Notepad里出现乱码不能正确显示汉字,这是为什么呢?

print("雿末")

原来Notepad++默认python的源码文件是ANSI编码的,需要在Notepad++中设置:编码==>编译成UTF-8编码。

在python中可以放置一条注释,表示这个文件是UTF-8编码的。

# -*- coding: utf-8 -*-
#str_encode.py
print("你好,祝你學習愉快!")

但是当我们在cmd里执行str_encode.py时,又输出了乱码(我当前的学习环境是繁体XP所以上面的汉字是繁体字)。

这又是什么情况呢?看样子我们的代码还需要修改。把我们的代码修订如下:

#-*- coding: utf-8 -*-
#str_encode.py
msg = "你好,祝你學習愉快!"
print(msg.decode("utf-8").encode("950"))

msg是unicode编码的需要decode("utf-8")解码为UTF-8的编码后使用encode(“950”)编码为950代码也就是繁体big5编码。

在cmd边框右键==>属性,查看cmd的编码方式。

查看默认编码方式

>>>import sys

>>>sys.getdefaultencoding()

ascii

>>>sys.stdout.encoding

cp950

参考资料:

1.阮一峰的字符编码笔记

原文地址:https://www.cnblogs.com/mengfanhao/p/3117229.html