Python轉(zhuǎn)json時出現(xiàn)中文亂碼的問題及解決
更新時間:2023年02月08日 10:23:46 作者:超級可愛的小甜甜
這篇文章主要介紹了Python轉(zhuǎn)json時出現(xiàn)中文亂碼的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Python轉(zhuǎn)json時出現(xiàn)中文亂碼
設(shè)置報文頭
# -*- coding:gbk -*- ?
連接數(shù)據(jù)庫設(shè)置編碼
mysql = MySQLdb.connect(host='數(shù)據(jù)庫,user=用戶名,passwd=密碼,db='數(shù)據(jù)庫, init_command="set names gbk" )?
將數(shù)據(jù)轉(zhuǎn)換為json
jsonData = json.dumps(data, encoding='gbk',ensure_ascii=False) ?
如果json數(shù)據(jù)中文顯示有問題,變成 \uXXX的形式,原因是中文以變?yōu)閡nicode 編碼了,而解碼默認是以ASCII解的,中文不在ASCII編碼中,所以無法顯示,加上ensure_ascii=False可以防止變?yōu)閡nicode 編碼。
設(shè)置json編碼
?jsonData ?= jsonData .encode('gbk')python json轉(zhuǎn)json字符串時,中文被轉(zhuǎn)義
核心
json.dumps(jsonData, ensure_ascii=False)
import pymysql
import json
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='root',
db='test'
)
cursor = conn.cursor()
sql = "select * from users"
cursor.execute(sql)
# row_1 = cursor.fetchone()
row_2 = cursor.fetchmany(3)
# print(row_1)
# print(row_2)
# print(list(row_2))
jsonData = []
for row in row_2:
obj = {}
obj['id'] = row[0]
# obj['createTime'] = row[1]
# obj['updateTime'] = row[2]
obj['name'] = row[4]
obj['phone'] = row[5]
jsonData.append(obj)
# print(row)
print(jsonData)
# json轉(zhuǎn)字符串中文轉(zhuǎn)字符
print(json.dumps(jsonData, ensure_ascii=False))
with open('./basedata.json', 'w') as f:
f.write(json.dumps(jsonData, ensure_ascii=False))
conn.commit()
cursor.close()
conn.close()總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python光學(xué)仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)
這篇文章主要為大家介紹了python光學(xué)仿真實現(xiàn)光線追跡折射與反射的實現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10
基于python內(nèi)置函數(shù)與匿名函數(shù)詳解
下面小編就為大家分享一篇基于python內(nèi)置函數(shù)與匿名函數(shù)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
pymongo實現(xiàn)多結(jié)果進行多列排序的方法
這篇文章主要介紹了pymongo實現(xiàn)多結(jié)果進行多列排序的方法,涉及Python排序的相關(guān)技巧,需要的朋友可以參考下2015-05-05

