python json.dumps() 中文乱码问题

摘要:
python输出一串中文字符,在控制台上通过print可以正常显示,但是写入到文件中之后,中文字符都输出成ascii编码了。原因:json.dumps序列化时默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False:更深入分析,是应为dJSONobject不是单纯的unicode实现,而是包含了混合的unicode编码以及已经用utf-8编码之后的字符串。

python 输出一串中文字符,在控制台上(控制台使用UTF-8编码)通过print 可以正常显示,但是写入到文件中之后,中文字符都输出成ascii编码了。英文字符能正常显示可读字符。

原因:json.dumps 序列化时默认使用的ascii编码,想输出真正的中文需要指定ensure_ascii=False:更深入分析,是应为dJSONobject 不是单纯的unicode实现,而是包含了混合的unicode编码以及已经用utf-8编码之后的字符串。

可行的方式如下:

1 importos
2 importos.path
3 importio
4 importsys
5 importjson
6 
7 contentByPage ={}
8 contentByPage['document'] =shortName
9 contentByPage['content'] =text
10 contentByPage['pageNumber'] =pageNumber
11 jsonFile = io.open(shortName+"--"+str(pageNumber)+".json",'w', encoding='utf8')
12 jsonFile.write(json.dumps(contentByPage, ensure_ascii=False).decode('utf8'))
13 jsonFile.flush()
14 jsonFile.close()

免责声明:文章转载自《python json.dumps() 中文乱码问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle的字符集(NLS_LANGUAGE)sql-优化建议下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

二维码(QR code)基本知识

1.二维码定义:   二维码(2-Dimensional Bar Code),是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的。它是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、...

转义、编码和加密

转义、编码和加密是开发中很常见也很基础的概念。对于初学开发的开发者,可能有时会无法准确的区分着几个词。我们将通过这篇文章来了解一下“转义、编码和加密”这几个词的关联和区别。 转义 第一种转义场景 绝大多数的开发者都曾经在自己学习第一个编程语言时,就遇到了这个概念。以经典的C语言中字符串中的字符转义为例。 如果在一个字符串中存在一个",那么就需要在"前添加才...

QString内部仍采用UTF-16存储数据且不会改变(一共10种不同情况下的编码)

出处:https://blog.qt.io/cn/2012/05/16/source-code-must-be-utf-8-and-qstring-wants-it/ 但是注意,这只是QT运行(RunTime)过程中采用的编码,并不代表源码文件里也是这样的。恰恰相反,源码文件必须是UTF8,带不带BOM都可以。我认为,虽然存储在源代码里的中文字是UTF8,...

sql注入100种姿势过waf(二):过安全狗

仅供学习交流如果你有更好的思路可以一起分享,想一起学习的进我主页  先去安全狗网站下载最新的安全狗版本 从官网下载 windwos apache版 v4.0.2395  最新版   数据库是mysql 5.6  1.首先判断是否有注入点包括是字符型还是数字型注入 我们假设他是数字型注入 构造 id=0=0 在数据库中执行   获取了全部数据  从返回的...

PostgreSQL常用初级技能树

1.创建表需要id自增 设置serial即可,示例: id serial not null  2.创建表没有设置后面想要再设置自增 给test表设置一个自增序列test_id_seq  CREATE SEQUENCE test_id_seq START 10;  然后在设计表中添加 nextval('test_id_seq'::regclass)  tes...

[C#]利用键代码自动转换生成字母键或其它键信息

先上图说明目的: 有时需要将A到Z(或更多的键盘信息)放到一个组合框或其它控件中,可以用循环语句轻松搞定: using System.Collections .ObjectModel ;//引用泛型数组空间 namespace mouseclick1{//返回26个字母的泛型数组class class_greatCharList{public stati...