pymongo 中文乱码问题

原文地址:

http://windkeepblow.blog.163.com/blog/static/1914883312013988185783/

 

 如题,其实我的问题很简单,就是在写爬虫的时候拿到网页的信息包含类似“\u65b0\u6d6a\u5fae\u535a\u6ce8\u518c”的字符串,实际上这是unicode的中文编码,对应的中文为“新浪微博注册”。其实我就是想找一个函数让这一串东西显示中文而已,没想到百度了白天找到合适的。遇到这种问题千万不要用什么 “python编码” “unicode中文编码” “unicode解码”这样的关键字去搜,一大堆网页出来毫不相关。

      其实这个问题一个函数搞定,如下:

Example 1:

>>> s = r"\u65b0\u6d6a\u5fae\u535a\u6ce8\u518c"

>>> s

'\\u65b0\\u6d6a\\u5fae\\u535a\\u6ce8\\u518c'

>>> print s

\u65b0\u6d6a\u5fae\u535a\u6ce8\u518c

>>> s = s.decode("unicode_escape");     #就是这个函数

>>> print s

新浪微博注册

 

Example 2:

>>> str_ = "Russopho\xe9bic, clichd and just pl\xe9ain stupid."

>>> print str_

Russopho?bic, clichd and just pl?ain stupid.

>>> str_ = str_.decode("unicode_escape")

>>> print str_

Russophoébic, clichd and just pléain stupid.

(这个方法解决了我在插入数据到mongodb时遇到的“bson.errors.InvalidStringData: strings in documents must be valid UTF-8”问题)

 

附上关于这个问题的相关博客链接:http://www.cnblogs.com/yangze/archive/2010/11/16/1878469.html

小结:

以后遇到奇葩问题要想好关键字再搜,不然很有可能一无所获。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值