python json.dumps() 中文亂碼問題


python 輸出一串中文字符,在控制台上(控制台使用UTF-8編碼)通過print 可以正常顯示,但是寫入到文件中之后,中文字符都輸出成ascii編碼了。英文字符能正常顯示可讀字符。

原因:json.dumps 序列化時默認使用的ascii編碼,想輸出真正的中文需要指定ensure_ascii=False:更深入分析,是應為dJSON object 不是單純的unicode實現,而是包含了混合的unicode編碼以及已經用utf-8編碼之后的字符串。

可行的方式如下:

 1 import os
 2 import os.path
 3 import io
 4 import sys
 5 import json
 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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM