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

前端将中文编码后传到后台,后台对传来的数据进行json.dumps存入mysql数据库,取出来后用loads载入,但结果还是unicode,想问下有没有什么办法把unic... 前端将中文编码后传到后台,后台对传来的数据进行json.dumps存入mysql数据库,取出来后用loads载入,但结果还是unicode,想问下有没有什么办法把unicode转回原来的中文 展开
 我来答
XYYF9798
推荐于2019-11-05 · TA获得超过26.9万个赞
知道小有建树答主
回答量:83
采纳率:100%
帮助的人:4.8万
展开全部

python默认就是unicode存储。如果是从文件读取的,在open的参数中指定encoding关键字参数就行。如下:

#coding=utf-8/import json /def LoadQuestion():  /f = open("test.json",'r')  qas = json.load(f)  question = qas['documents'] /return question/t = LoadQuestion() /print str(t).decode("unicode-escape")     

拓展资料:

通常python2时所有IO读写都是byte方式。也就是编码后的。java也是这样子。只有python3还有某些特定的模块才会自动将byte重新转换成unicode

在python2里的确可以使用s.decode('gbk','ignore')之类的变成unicode。不过在python3里应该是这样子, s.encode('gbk','ignore')这样就变成了byte

如果你喜欢 utf-8,可以s.encode(‘utf-8','ignore')和s.decode(‘utf-8','ignore')

bdwisyou7d
推荐于2017-09-01 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3774
采纳率:81%
帮助的人:1077万
展开全部
loads取出后是unicode?我怀疑你用的是python3

通常python2时所有IO读写都是byte方式。也就是编码后的。java也是这样子。只有python3还有某些特定的模块才会自动将byte重新转换成unicode

在python2里的确可以使用s.decode('gbk','ignore')之类的变成unicode。不过在python3里应该是这样子, s.encode('gbk','ignore')这样就变成了byte

如果你喜欢 utf-8,可以s.encode(‘utf-8','ignore')和s.decode(‘utf-8','ignore')

多试试就可以了。 console和文件只支持编码过的字符串。
追问
用的是python2.6
追答
如果是python2系列就可以放心大胆的去使用了。loads载入?我不太记得了。我一般记得数据库是建立一个cursor然后是fetch过来的。 一条一条的。这个DBAPI会自动做些变量转换。

如果type(s)的确是unicode,直接print s.encode("gbk","ignore)
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhanglebest
2013-05-21
知道答主
回答量:1
采纳率:0%
帮助的人:1501
展开全部
可以试试 str.encode('gbk','ignore') 或者 str.encode('gb2312','ignore')
还是不行的话,应该看看是将中文编码为什么码之后传到了后台,如果不是把中文编码为Unicode之后传到了后台,而是编码为utf-8之类的,那上面的方法肯定不行
追问
传到后台前用了tornado.escape 包里的json_encode处理,后台接收到后用json_decode解码然后用json.dumps处理后就直接存到数据库的,数据库取出后用json.loads处理后还是unicode,代码文件开始声明的是codng:utf-8
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
新不起浪
推荐于2017-09-03 · 做一名合格的环保卫士
新不起浪
采纳数:502 获赞数:2777

向TA提问 私信TA
展开全部

1、python2与python3稍微有点区别

2、python2中默认的字符编码格式都是unicode,在字符串前加'u',表示unicode 编码

3、将unicode转换成中文,只需要用deconde解码就可以了

>>> u='欢迎'
>>> e=u.encode()
>>> e
b'\xe6\xac\xa2\xe8\xbf\x8e'
>>> e.decode()#python3中默认就是utf-8编码
'欢迎'
>>> e.decode('gbk')#如果解码为gbk就是乱码
'娆四繋'

python2编码环境比较复杂,在这里不做详细说明

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sars_715
2013-05-21 · 超过18用户采纳过TA的回答
知道答主
回答量:85
采纳率:100%
帮助的人:43.3万
展开全部
s.encode('utf8')或者s.encode('gb2312')试试~
追问
不行
追答
额……s.decode('raw_unicode_escape')再试试这个……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式