博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python unicode字节串转成中文问题
阅读量:5999 次
发布时间:2019-06-20

本文共 1176 字,大约阅读时间需要 3 分钟。

如题,其实我的问题很简单,就是在写爬虫的时候拿到网页的信息包含类似“\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。
小结:
以后遇到奇葩问题要想好关键字再搜,不然很有可能一无所获。

 

转自:

你可能感兴趣的文章
golang 手游框架设计 - 本人浅陋的见解, 求达人指正
查看>>
Linux之文本编辑器VIM
查看>>
深入浅出学习hive-doc
查看>>
mktemp -创建一个临时文件或目录
查看>>
解决编译apache出现的问题:configure: error: APR not found . Please read the documentation
查看>>
SpringMongo
查看>>
教你如何设置Win7任务栏大小
查看>>
迅博SSL ×××产品介绍
查看>>
Linux环境下BufferedImage Graphics drawString 中文乱码解决方法
查看>>
ubuntu安装软件
查看>>
JS 自定义 HTML 事件
查看>>
delphi中,让程序只运行一次的方法[1]
查看>>
常见Serialize技术探秘(ObjectXXStream、XML、JSON、JDBC byte编码、Protobuf)
查看>>
构筑敏捷能力中心,打造下一代数字银行“操作系统”!
查看>>
oracle 修改 system 密码
查看>>
Java中运用数组的四种排序方法
查看>>
Jfinal 学习控制台打印方法
查看>>
AngularJs初识
查看>>
带着三个问题深入浅出React高阶组件
查看>>
点石成金-Linux目录结构,命令,文件类型学习
查看>>