Необходимо обработать язык каннада (региональный) в Python 3.7 без проблем с кодировкой
Есть файл 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
>
Если я использую UTF-8, как with open('info.json', 'r', encoding='utf-8')
только Каннада Контент конвертируется в Escape Unicode Entities, такие как \u0c85\u0ca4\u0ccd\u0ca4\u0cb2\u0cbf\u0ca4\u0ccd\u0ca4
Поскольку это строка, я нахожу проблему при преобразовании ее обратно в настоящие символы Каннада.
Я пытался использовать различные типы декодирования, как...
str(infoObj['desc'], "utf-8"),
infoObj['desc'].decode('unicode-escape')
Провел много исследований за 5 часов безуспешно.
Ищу помощи относительно того, как я могу вернуть Каннада Текст.
Заранее спасибо.
1 ответ
Если я использую UTF-8, как с open('info.json', 'r', encoding='utf-8')
только Каннада Содержимое преобразуется в Escape Unicode Entities, такие как \u0c85\u0ca4\u0ccd\u0ca4\u0cb2\u0cbf\u0ca4\u0ccd\u0ca4
Нет.
Содержимое каннада правильно интерпретируется как строка Python, содержащая буквы каннада. Проще говоря, в зависимости от того, как вы пытаетесь отобразить строку, отличную от ascii, некоторые символы могут отображаться со своими значениями Unicode, могут исчезать или могут быть заменены другими специальными символами замены.
И Python не делает различий между персонажем и его представлением:
>>> "\x41\x62" == "Ab"
True
Таким образом, у вас могут возникнуть проблемы с отображением букв каннада, но не с правильным декодированием файла json.
Это сработало для меня, когда я добавил error='ignore' вместе с кодировкой utf8...
with open('info.json', 'r', encoding='utf8', errors='ignore')