首页 / 知识
解决python中json.dumps中文乱码问题
2023-11-12 13:21:00
pythonjson.dumps中文乱码问题解决
json中文乱码
json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题
json.dumps在不同版本的Python下会有不同的表现,注意下面提到的中文乱码问题在Python3版本中不存在。
注:下面的代码再python2.7版本下测试通过
#-*-coding:utf-8-*-
odata={'a':'你好'}
printodata
结果:
{'a':'\xe4\xbd\xa0\xe5\xa5\xbd'}
printjson.dumps(odata)
结果:
{"a":"\u4f60\u597d"}
printjson.dumps(odata,ensure_ascii=False)
结果:
{"a":"浣犲ソ"}
printjson.dumps(odata,ensure_ascii=False).decode('utf8').encode('gb2312')
结果:
{"a":"你好"}
要解决中文编码,需要知道python2.7对字符串是怎么处理的:
由于#--coding:utf-8--的作用,文件内容以utf-8编码,所以printodata
输出的是utf-8编码后的结果{‘a’:‘\xe4\xbd\xa0\xe5\xa5\xbd’}
json.dumps序列化时对中文默认使用的ascii编码,printjson.dumps(odata)输出unicode编码的结果
printjson.dumps(odata,ensure_ascii=False)不使用的ascii编码,以gbk编码
‘你好’用utf8编码是%E4%BD%A0%E5%A5%BD用gbk解码是浣犲ソ
字符串在Python内部的表示是unicode编码。
因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码
decode(’utf-8’)表示将utf-8编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串
encode(‘gb2312’),表示将unicode编码的字符串转换成gb2312编码。
python3中没有这种问题,所以最简单的方法是引入__future__模块,把新版本的特性导入到当前版本
from__future__importunicode_literals
printjson.dumps(odata,ensure_ascii=False)
结果
{"a":"你好"}
在写入文件的时候出现了Python2.7的UnicodeEncodeError:‘ascii’codeccan’tencode异常错误
大神的解决方法:
不使用open打开文件,而使用codecs:
from__future__importunicode_literals
importcodecs
fp=codecs.open('output.txt','a+','utf-8')
fp.write(json.dumps(m,ensure_ascii=False))
fp.close()
以上内容为大家介绍了解决python中json.dumps中文乱码问题,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们
最新内容
相关内容
python终端输出乱码怎么解决?
python终端输出乱码怎么解决?,代码,系统,一致,培训,地方,工作,终端,文件,乱码,声明,在命令行终端上工作时,经常会碰到一个头疼的问题就是中文如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python脚本中有乱码怎么解决
python脚本中有乱码怎么解决,代码,培训,脚本,乱码,中文,下面,英语系,源文件,语句,源码,有时候,在Python脚本里有中文的时候,会报下面的错误:Non-Python写完代码怎么用
Python写完代码怎么用,代码,下来,数字,概念,培训,文本,模式,文件,程序,路径,python运行有两种方式,一种是在python交互式命令行下运行;另一种python读入不定行字符的问题
python读入不定行字符的问题,培训,字符,问题,方法,头尾,示例,空格,字符串,序列,结尾,python读入不定行字符的问题解决:stdin.readline()会读取python如何检测字符串是不是全为字
python如何检测字符串是不是全为字母?,检测,培训,字符串,字母,方法,字符,示例,语法,以上,更多,python中可以使用isalpha()方法检测字符串是不Python文件如何转换为字符串
Python文件如何转换为字符串,数据,主体,名字,培训,文件,字符串,末尾,方法,对象,语句,python文件如何转换为字符串的方法:一、最方便的方法是一如何看电脑python版本
如何看电脑python版本,电脑,培训,版本,命令,以上,方法,更多,内容,python查看版本的方法:1、使用python-V命令查看C:\Users\Administrator>Python中区分字符与字符串吗?
Python中区分字符与字符串吗?,数据,培训,数字,字符串,数据类型,字符,类型,语言,有所不同,布尔,python中不区分字符与字符串,与C语言相比,Pythonpython如何显示中文字体
python如何显示中文字体,地方,培训,文件,方法,之后,中文字体,中文,模块,声明,时候,python显示中文字体的方法:在这里,你可以选择2种不同的解决python如何将结果保存
python如何将结果保存,数据,郑州,培训,文件,字符串,函数,你好,模式,结果,内容,一、建立文件,保存数据1.使用python中内置的open函数,打开txt文python2.7如何注释代码
python2.7如何注释代码,代码,注释,位置,信息,培训,内容,中文,程序,声明,语法,确保对模块,函数,方法和行内注释使用正确的风格python中的注释