python unicode字节串转成中文问题

如题,其实我的问题很简单,就是在写爬虫的时候拿到网页的信息包含类似“\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

另外还有一个与unicode字节串有关的问题,遇到这样的错误提示:Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal。说明我们在对两个字符(串)进行对比的时候等号两边的类型

不一样,可能是一边是unicode字节串,一边是字符串。详见http://stackoverflow.com/questions/3400171/python-utf-8-comparison。

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

时间: 2024-10-07 18:23:36

python unicode字节串转成中文问题的相关文章

python编码处理:unicode字节串转成中文 各种字符串举例说明

编码问题一直是很头痛的问题: 当字符串是:'\u4e2d\u56fd' >>>s=['\u4e2d\u56fd','\u6e05\u534e\u5927\u5b66']>>>str=s[0].decode('unicode_escape')  #.encode("EUC_KR")>>>print str 中国 当字符串是:' 东亚学团一中' >>>print unichr(19996) 东 ord()支持unico

python 16进制转成中文

python >>>import urllib >>> u = urllib.unquote('%E5%8C%97%E4%BA%AC') >>> print u 北京

jmeter响应信息unicode 编码转成中文

在jmeter 发送请求过程中,有时候后台返回的是unicode 代码,如: {"status":-1,"msg":"\u63d0\u4ea4\u6570\u636e\u4e0d\u8db3"} 手动转换成中文为: {"status":-1,"msg":"提交数据不足"} 需要使用jmeter 把响应内容转换成中文显示,方便查看.思路是使用bean shell 把unicode响应结果转

python将dict中的unicode打印成中文

python将dict中的unicode打印成中文 import json a = {u'content': {u'address_detail': {u'province': u'\u5409\u6797\u7701', u'city': u'\u957f\u6625\u5e02', u'street_number': u'', u'district': u'', u'street': u'', u'city_code': 53}, u'point': {u'y': u'43.89833761

ParisGabriel:Python全栈工程师(0基础到精通)教程 第二十二课(迭代器、字节串)

ParisGabriel 每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 迭代器 Iterator: 用<>括号表示的一定是对象 什么是迭代器? 迭代器是访问可迭代对象的工具 迭代器是指用iter(obj) 函数返回的对象(实例) 迭代器可以用next(it) 函数获取可迭代对象的数据 迭代器函数iter和next iter(iterable) 从可迭代对象中返回一个迭代器,iterable 必须是能提供一个迭代器的对象 next(iterator

Python3的unicode编码转换成中文问题

Python3的unicode编码转换成中文问题 从别的地方搬过来的,担心以后不容易搜索到,就收集过来. 我当时面临的问题是要从C++发json代码出来,用python写了个server,然后返回给C++程序,结果收到的是:httpSvrDataCbUser: {"tranNO": "0808ad498670dc996", "data": "\u65b0A1EY16", "ver": "1.0&q

python中的字符串和字节串

字节概念: 字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位.最常用的字节是八位的字节,即它包含八位的二进制数. 位:(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数. 字节:(byte):是计算机中 数据处理 的基本单位,习惯上用大写  B  来表示,1B(byte,字节)= 8bit(位). 字符概念 字符 是指计算机中使用的字母.数字.字和符号,包括:1.2.3.A.B.C.~!

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16)  ==>  0x10 16进制转10进制: int('0x10', 16)  ==>  16 类似的还有oct(), bin() ------------------- 字符串转整数: 10进制字符串: int('10')  ==>  10 16进制字符串: int('10', 16)  ==>  16 16进

JAVA unicode转换成中文

/** * * unicode 转换成 中文 * @param theString * @return */ public static String decodeUnicode(String theString) { char aChar; int len = theString.length(); StringBuffer outBuffer = new StringBuffer(len); for (int x = 0; x < len;) { aChar = theString.char