其中有一个包含Kannada字母的JSON文件。 Info.json
{
"name":"",
"url":"",
"desc":"ಹಾಡುಗಳನ್ನು ಈಗ ಆನಂದಿಸಿ."
}
如果我尝试不使用
这样的编码来读取此文件with open('info.json', 'r')
我得到错误:
'charmap' codec can't decode byte 0x8d in position 38: character maps to <undefined
>
如果我使用类似with open('info.json', 'r', encoding='utf-8')
的UTF-8
仅卡纳达语内容被转换为\u0c85\u0ca4\u0ccd\u0ca4\u0cb2\u0cbf\u0ca4\u0ccd\u0ca4
之类的Escape Unicode实体
由于这是一个字符串,因此在将其转换回实际的卡纳达语字符时发现问题。
我尝试使用各种解码方式,例如...
str(infoObj['desc'], "utf-8"),
infoObj['desc'].decode('unicode-escape')
进行了5个小时的大量研究,均未成功。
寻求有关如何找回卡纳达语文本的帮助。
谢谢。
答案 0 :(得分:2)
如果我使用类似open('info.json','r',encoding ='utf-8')的UTF-8
仅卡纳达语内容被转换为转义Unicode实体,例如\ u0c85 \ u0ca4 \ u0ccd \ u0ca4 \ u0cb2 \ u0cbf \ u0ca4 \ u0ccd \ u0ca4
不,不是。
将Kannada内容正确解释为包含Kannada字母的Python字符串。简单来说,根据您尝试显示非ascii字符串的方式,某些字符可能会以其unicode值显示,可能会消失或被其他特殊替换字符替换。
Python在字符及其表示之间没有区别:
>>> "\x41\x62" == "Ab"
True
因此,您可能会在显示卡纳达语字母时遇到问题,但无法正确解码json文件。
答案 1 :(得分:0)
当我添加了error ='ignore'和utf8编码时,它对我有用...
with open('info.json', 'r', encoding='utf8', errors='ignore')