21

——字符编码——

#在python2.x上执行

执行如下一段代码,把s转为gbk格式:

报错:

原因是:如果直接进行编码,它会用默认的字符编码级进行解码,然后再进行编码。python2.x默认的字符编码级为ASCII。所以解码s是ASCII码的形式,ASCII码又不支持中文,所以报错了。

我们可以打印一下默认的string编码格式,调用sys.getdefaultencoding():

可以看到是ASCII码:

所以我们必须要先进行解码,把s解码成Unicode,然后再进行编码。我们先进行解码看一下:

结果如下,Unicode支持中文所以可以显示。

我们可以打印一下s_to_unicode的类型:

接下来,我们把utf-8的数据转换成gbk的形式:

是不能打印出来的:

原因是:terminal 不支持gbk格式。

我们要更改会话的字符编码级。

字符编码级为utf-8形式时,可以显示utf-8,可以显示Unicode,不可以显示gbk。

字符编码级为gbk时,可以显示gbk,不可以显示utf-8,也不可以显示Unicode。

以上是utf-8转换为gbk。

那gbk转换为utf-8呢?

结果打印显示“你好”。

我们在你好前面加个u,以前的你好是utf-8格式,在前面加个u,现在的s就是Unicode格式,可以直接进行打印:

结果显示“你好”。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容