Необходимо обработать язык каннада (региональный) в Python 3.7 без проблем с кодировкой - PullRequest
0 голосов
/ 18 января 2019

Есть файл 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 Ответ

0 голосов
/ 18 января 2019

Если я использую 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.

...