gpt4 book ai didi

python - 无法将 mysql 中的特殊字符存储到 json 文件中 - Python

转载 作者:行者123 更新时间:2023-11-29 21:54:01 25 4
gpt4 key购买 nike

我有一个从 mysql 表中获取数据的脚本。表中的一列包含西类牙字符,如 á、é 等,在执行主查询之前,它被设置为 utf8 输出。

执行查询后,包含上述特殊字符的数据很好,我可以打印出来而没有看到任何不同。但是,我的问题是,当我创建一个 json 文件作为输出并保存该文件时,生成的数据被编码为 un​​icode 而不是西类牙文本。我还尝试解码 mysql 的输出并在保存 json 文件时进行编码,但我仍然在 unicode 中看到这些特殊字符。

我知道在使用特殊字符之前需要解码->unicode,最后如果我想保存数据,就必须对其进行编码。然而,这并没有奏效。您可以查看我的 python 脚本的简短版本。

import json
import collections
#Database connection
...
#getting the cursor
cursor = db.cursor()

cursor.execute(' SET NAMES utf8' )
cursor.execute('SELECT * FROM eqs ORDER BY localdate DESC, localtime DESC')
....
master_object= collections.OrderedDict()
for row in rows:
#adding data within the master_object
j=json.dumps(master_object) # <- Here, I tried enconding the data (master_object,enconding='utf-8') and with in the for loop i decode the string
fo=open('output.json','w')
fo.write(j)
fo.close()

最佳答案

您似乎正在使用 json 编码字符串创建 ASCII 编码 json 文件,这是存储 JSON 文件的典型用例。

我想你想要一个 UTF-8 编码的 json 文件。为此,请在 json 编码步骤中设置 ensure_ascii=False,以便 utf8 编码的字符串直接传递到文件。

这样的东西可能适合你。

import json
master_objects = {
"tomorrow" : "ma\xc3\xb1ana" # UTF-8 encoding, just like what comes from db
}

print master_objects["tomorrow"] # Should print man~ana, only prettier

with open("output.json", "wt") as output_file:
json.dump(master_objects, output_file, ensure_ascii=False)

关于python - 无法将 mysql 中的特殊字符存储到 json 文件中 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33355365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com