Python Unicode

Python中经常会遇到中文,编码有关的问题,在此分析下具体情况。

首先,在Python2中字符序列有两种,一种是str,一种是unicode。str实际上是用ascii来表示的,而unicode则是用unicode来表示的。

举个例子,我们在python脚本中写中文,如果没有直接提示出错的话,那在输出时候经常会出现0x4e这种东西,实际上就是 ascii表示。如果出错可以在开头加一句:

# -*- coding: utf-8 -*-

or

# coding=utf-8

PEP推荐上面第一种。


接下来讲讲str和unicode的转化。

str可以通过decode转化为utf-8;utf-8可以通过encode转化为str。简而言之,str可以进行解码操作,unicode可以进行编码操作。另外编码方式并不是只有unicode一种,还有gbk,gb2312等等。

具体转化可以写一个函数。如下图的return_chinese(s)。

code

如果判断字符序列是unicode,那么就采用utf8进行编码,并返回。如果判断字符序列是str,那就先用utf-8进行解码,然后用utf-8进行编码。如果想要其它编码方式可以自己根据需要进行修改。

另外的代码是对应的一些测试,结果如下图。

result