python的字符串、编码问题

来源:互联网 发布:jav网络机顶盒v8固件 编辑:程序博客网 时间:2024/06/05 18:26

很多人不知道该如何去处理python里面的中文字符串,经常在操作的时候出现编解码的error,

举例:

def handle_data(self, data):
if new_data.find(u"查询结果[") != -1:

if new_data.find(u"美国") != -1:

print data

上述的代码在执行find的时候往往会报错,究其原因是因为python的str对象是一个字节数组,其保存的是编解码以后的字节序列,也即是str本身不会对其存储的数据流做出任何的解释的,类似我们print name,其实是print命令本身来对name里面的字节流进行解码并显示出来,若不指定编解码的类型则会采用系统默认的编解码。例如python上中文默认是用gbk编码的,若要明确指明一个中文用utf8编码则使用u"无敌风火轮",因此若传递进来的data并不是utf8编码的,那么在执行find的时候就可能报错


OK,这样我们就明确了应该如何来对字符串进行合理的操作了,我们可以通过encode()和decode()函数来对str对象进行任意的编解码操作,如上的函数修改为

def handle_data(self, data):
new_data = data.decode("utf-8")  //我们将data按照utf-8来进行解码操作,这样就能够正确用find操作来查找utf8编码的“美国”中文了
if new_data.find(u"查询结果[") != -1:
if new_data.find(u"美国") != -1:
print data



0 0
原创粉丝点击