Python转json时出现中文乱码
设置报文头
# -*- coding:gbk -*-
连接数据库设置编码
mysql = MySQLdb.connect(host='数据库,user=用户名,passwd=密码,db='数据库, init_command="set names gbk" )
将数据转换为json
jsonData = json.dumps(data, encoding='gbk',ensure_ascii=False)
如果json数据中文显示有问题,变成 \uXXX的形式,原因是中文以变为unicode 编码了,而解码默认是以ASCII解的,中文不在ASCII编码中,所以无法显示,加上ensure_ascii=False可以防止变为unicode 编码。
设置json编码
jsonData = jsonData .encode('gbk')
python json转json字符串时,中文被转义
核心
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转字符串中文转字符
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()
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。