LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2704|回复: 2

python编码的疑惑

[复制链接]
发表于 2010-1-3 13:51:42 | 显示全部楼层 |阅读模式
为了使用urllib2.urlopen()打开网页。
可是参数url却是从数据库中读取出来的(unicode编码)于是得编解码一下:
[php]
    url = unicode(url).encode("utf8")[/php]
为了把页面的内容通过正则式解析出来,于是有
[php]
    reg = r'关键点:(.*)'[/php]
又为了把解析出来的内容传递给其他的模块使用,于是要把编码变为unicode。所以我干脆把整个网页的内容都编解码一次:
[php]
    page = urllib2.urlopen(url).decode("utf8")[/php]
可是,这时候reg却依然是utf8编码(代码文件的编码),于是造成不能解析。。。唯一的办法只能是对正则式进行解码:
[php]
    reg = reg.decode("utf8")[/php]
综上,整个流程就是:
[php]
    ....
    reg = r'关键点:(.*)'
    ....
    def analyse(url):
        url = unicode(url).encode("utf8")
        reg = reg.decode("utf8")
        page = urllib2.urlopen(url).decode("utf8")
        list = re.findall(reg, page)
        ....继续处理
[/php]
这样反复解码编码是不是太繁琐了?!python的这种设计究竟目的是什么??

PS:似乎将数据插入到数据库中依然还是用UTF-8编码,到时依然还得编解码一次。。。
[php]
    pbvalue.set_stringvalue(unicode(value).encode('utf-8'))
[/php]
发表于 2010-3-14 12:52:00 | 显示全部楼层
你做的好复杂。
把所有编码都搞成utf-8就行了。
回复 支持 反对

使用道具 举报

发表于 2010-5-7 11:36:34 | 显示全部楼层
楼上的,unicode和utf8是两回事
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表