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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3的unicode编码转换成中文问题相关的知识,希望对你有一定的参考价值。

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

9102年,大部分人已经受尽了python2里面unicode的折磨,转向了python3。
python3似乎对一切的unicode都那么的友好,当一个字符串里存在unicode的时候,只要字符串是硬编码的,就可以转换成中文打印在控制台上,如:

s = ‘u7b14u8bb0’
print(s)

你得到的就是中文汉字。
但是,假如你。。的这段含有‘u’的unicode编码不是硬编码进脚本的,而是通过requests在网上爬的。。。那么你会发现,你打印出来的,还是长这样的unicode编码,换句话说,解释器这个时候根本就没认出这东西原来是unicode编码,当成普通的字符序列了。
百度找到了最好的解决方法:在这个unicode串后面加上:

s = s.decode().encode(‘unicode_escape’)
print(s)

它就打印出汉字了

 

python3中没有这种问题,所以最简单的方法是引入__future__模块,把新版本的特性导入到当前版本

from __future__ import unicode_literals

print json.dumps(m,ensure_ascii=False)

=>{"a": "你好"}
在写入文件的时候出现了Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误

大神的解决方法: 
不使用open打开文件,而使用codecs:
from __future__ import unicode_literals
import codecs
fp = codecs.open(‘output.txt‘, ‘a+‘, ‘utf-8‘)
fp.write(json.dumps(m,ensure_ascii=False))
fp.close()

以上是关于Python3的unicode编码转换成中文问题的主要内容,如果未能解决你的问题,请参考以下文章

python中怎样将unicode转换成原来的中文?

python3中各个字符编码的转换

怎样将unicode编码转换为中文

python3中的编码问题

python中字符串编码转换

python 如何将乱码转成汉字