Python转json时出现中文乱码的问题及解决

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()

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(Python转json时出现中文乱码的问题及解决)