提问人:underloaded_operator 提问时间:8/15/2023 更新时间:8/15/2023 访问量:56
UTF-8 编码未显示特殊字符 [duplicate]
UTF-8 Encoding is not showing special charachters [duplicate]
问:
问题:
我的 Python 函数遇到了一个问题,该函数从 CSV 文件中读取数据并将其转换为 JSON 格式。CSV 文件包含特殊的斯洛文尼亚字母,例如“č”、“š”、“ž”等。我使用 UTF-8 编码来读取和写入文件,据我所知,这些文件应该支持这些字符。但是,该函数似乎没有按照我想要的方式处理这些字符。它们在输出 JSON 文件中显示为 Unicode 转义序列。
以下是该函数的简化版本:
import csv
import json
def read_rail_nodes(_in_file: str, _out_file: str) -> None:
json_objects = []
with open(_in_file, 'r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
next(csv_reader)
for row in csv_reader:
id, station_name, _, _ = row
json_objects.append({'id': id, 'station_name': station_name})
with open(_out_file, 'w', encoding='utf-8') as file:
json.dump(json_objects, indent=4, fp=file)
print("\n[rail_nodes.csv] data converted and saved to [", _out_file, "]\n")
read_rail_nodes('rail_nodes.csv', 'rail_nodes.json')
示例输入:
43002,Laško,46.15453611,15.23225833
输出示例:
{
"id": "43002",
"station_name": "La\u0161ko"
},
期望输出:
{
"id": "43002",
"station_name": "Laško"
},
我正在使用 VS Code,并且已经仔细检查了我的编码,它设置为 UTF-8,使用任何其他编码打开文件只会使情况变得更糟。.josn
我一直在考虑一个单一的潜在解决方案,尽管我对未来可能出现的潜在并发症持谨慎态度。在我看来,在读取.json文件时采用 UTF-8 编码可能是一种可行的补救措施。但是,在直观地呈现JSON数据时,我发现自己陷入了困境,因为我目前无法设计出合适的方法
我的代码中是否遗漏了某些内容,在处理具有 UTF-8 编码的文件时,我是否需要做一些特定的事情来正确支持特殊的斯洛文尼亚字母,或者我的双手是否被束缚?
任何帮助或指导将不胜感激!
其他信息:
Python 版本:3.11.3
操作系统:MacOS
答:
你面临的问题不在于你的代码,而在于 Python 的函数如何转义 Unicode 字符。json.dump()
如果你想看到直接显示实际Unicode字符的JSON,你可以使用函数的参数,将其设置为false,JSON将使用实际的Unicode字符而不是转义序列来编写,例如:ensure_ascii
json.dump()
json.dump(json_objects, indent=4, fp=file, ensure_ascii=False)
下一个:类名可以用作命名空间吗?
评论