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格式,可以直接进行打印:

结果显示“你好”。

你可能感兴趣的:(21)