Я хочу использовать API из игры и хранить имена игроков и кланов в локальной базе данных. Имена могут содержать всевозможные символы и смайлики. Вот только несколько примеров, которые я нашел:
- ⭐?
- яαℓαηι
- نکل
- 窝 猫
- 鐵 擊 道 遊 隊
- ❤✖❤ ♠ ️ ♦ ️ ♣ ️✖
Я использую python для чтения API и записи его в базу данных MySQL. После этого я хочу использовать имена в веб-приложении Node.js.
Каков наилучший способ кодирования этих символов и как я могу сохранить их в базе данных, чтобы впоследствии их можно было правильно отобразить?
Я пытался кодировать строки в python с помощью utf-8:
>>> sample = '蛙喜鄉民CLUB'
>>> sample
'蛙喜鄉民CLUB'
>>> sample = sample.encode('UTF-8')
>>> sample
b'\xe8\x9b\x99\xe5\x96\x9c\xe9\x84\x89\xe6\xb0\x91CLUB'
и сохранение закодированной строки в базе данных mysql с набором символов utf8mb4_unicode_ci .
Когда я сохраняю строку сверху и выбираю ее в инструментальной среде mysql, она отображается следующим образом:
蛙喜鄉民CLUB
Когда я снова читаю эту строку из базы данных в Python (и сохраняю ее в db_str
), я получаю:
>>> db_str
èåéæ°CLUB
>>> db_str.encode('UTF-8')
b'\xc3\xa8\xc2\x9b\xc2\x99\xc3\xa5\xc2\x96\xc2\x9c\xc3\xa9\xc2\x84\xc2\x89\xc3\xa6\xc2\xb0\xc2\x91CLUB'
Первый вывод - полная тарабарщина, второй с utf-8 выглядит в основном как закодированная строка сверху, но с добавленными \xc2
или \xc3
между каждым байтом.
Как я могу сохранить такие строки в mysql, чтобы я мог их снова прочитать и правильно отобразить в скрипте python?
Подходит ли моя сортировка базы данных utf8mb4_unicode_ci для такого контента? Или я должен использовать другую кодировку?