使用Python生成含马拉地语的JSON文件出现不可读内容求解决方案
问题根因
代码存在两处错误导致文件内容异常:
- 执行
json.dumps(x, ensure_ascii=False)后额外调用了encode('utf8'),将JSON字符串转换为了bytes类型 - 写入文件时使用
str(y)强制转换bytes对象,直接把bytes类型的标识b'和十六进制转义字符写入了文件,而非实际的UTF-8编码字符
解决方案
修改后可正常生成包含马拉地语的JSON文件的代码如下:
import os import json jsonFilePath = "E:/file/" captchaImgLocation = "E:/file/captchaimg/" path_to_tesseract = r"C:/Program Files/Tesseract-OCR/tesseract.exe" image_path = r"E:/file/captchaimg/captcha.png" x = { "FName": "प्रवीण", } # 直接生成保留非ASCII字符的JSON字符串 y = json.dumps(x, ensure_ascii=False) print(y) completeName = os.path.join(jsonFilePath, "searchResult_Unicode.json") print(completeName) # 打开文件时显式指定UTF-8编码,避免系统默认编码导致乱码 with open(completeName, "w", encoding="utf-8") as file1: file1.write(y)
核心修改点
- 移除了多余的
encode('utf8')操作,直接使用json.dumps输出的字符串内容 - 打开文件时显式指定
encoding="utf-8",规避Windows系统默认编码不支持非ASCII字符的问题 - 改用
with语句管理文件句柄,自动处理文件关闭逻辑,避免资源泄漏
内容的提问来源于stack exchange,提问作者Am Ventures
相关产品推荐
相关产品推荐

