Django - Как правильно хранить эмодзи в БД postgres?
Я использую последнюю версию Django на postgres. Я пытаюсь хранить эмодзи в моей postgres DB таким образом, чтобы приложение React Native могло правильно их отображать. Ниже я привожу начальную настройку переменных emojis, которые пойдут в talbe. Я скопировал и вставил эмодзи из отсюда. Как вы можете видеть, я получаю ошибку от PyCharm о том, что это "BAD_CHARACTER". Как мне хранить emojis в моей postgres DB, чтобы приложение React Native могло правильно их отображать?
Как и предлагалось в комментариях, нужно заключать эмодзи в кавычки, поскольку это просто символы. Хотя, например, флаги - это два символа. Так что с этим нужно быть осторожным. Все, что делает ваш компьютер, это преобразует юникод в визуализированный эмодзи, который зависит от платформы.
Эмодзи, которые вы используете, должны поддерживать юникод. На вашем компьютере они определенно поддерживаются. По большей части, дополнительная поддержка юникода для новых эмодзи очень быстро реализуется после публикации на клиентских машинах. С эмодзи в строках проблем быть не должно. Это хорошее видео, объясняющее эмодзи, снятое Томом Скоттом, который постоянно дает интервью об эмодзи: https://www.youtube.com/watch?v=sTzp76JXsoY
Я не эксперт, поэтому, пожалуйста, поправьте меня, если я ошибаюсь.
В ваших моделях необходимо использовать CharField
или TextField
для хранения эмодзи, которые должны передаваться как символы (например, "😄"
, а не напрямую 😄
). Ваша база данных должна использовать utf8 для поддержки эмодзи, подключитесь к базе данных с помощью SQL shell, чтобы проверить текущую кодировку выполните:
SHOW CLIENT_ENCODING;
Если вывод не UTF8
выполняется:
SET CLIENT_ENCODING='UTF8';
Теперь удалите ’OPTIONS’: {’charset’: ’utf8mb4’}
из настроек Django.