【问题标题】:Django - How to store emojis in postgres DB properly?Django - 如何在 postgres DB 中正确存储表情符号?
【发布时间】:2021-11-27 02:21:56
【问题描述】:

我在 postgres 上运行最新版本的 Django。我正在尝试以 React Native 应用程序可以正确呈现它的方式将表情符号存储在我的 postgres 数据库中。下面我有将进入表格的初始表情符号变量设置。我已经从here 复制并粘贴了表情符号。如何在我的 postgres 数据库中存储表情符号,以便 React Native 应用程序可以正确呈现它?

我尝试遵循此blog,它建议在settings.py 下将'OPTIONS': {'charset': 'utf8mb4'} 添加到DATABASES,但我收到此错误django.db.utils.ProgrammingError: invalid dsn: invalid connection option "charset"。似乎这仅适用于 MySQL 数据库。 如何在 Django postgres DB 中存储表情符号?

【问题讨论】:

  • 您不需要在 Python 中将表情符号放在引号内吗?否则 Python 不会知道它是一个字符串。
  • @NickODell 抱歉,是的,我发了这个截图
  • 您知道,如果您将代码复制粘贴到问题中,由于您修复了问题,因此当代码更改时更新比屏幕截图更容易。
  • @NickODell 公平点,但这不是手头的主要问题,而是将这些字符串存储在 postgres 数据库中。但是,是的,您确实提出了一个很好的观点。
  • 既然您已经修复了引号,请尝试删除 charset 选项。完全有可能它会起作用。如果不是,请包含生成的错误消息。

标签: django postgresql react-native


【解决方案1】:

就像建议的 cmets 一样,您需要在表情符号周围加上引号,因为它们只是字符。不过,像标志这样的东西实际上是两个字符。所以这是要小心的事情。您的计算机所做的就是将 unicode 转换为依赖于平台的渲染表情符号。

您使用的表情符号应支持 Unicode。在您的计算机上,它们绝对受支持。在大多数情况下,一旦在客户端机器上发布,对新表情符号的额外 unicode 支持会很快实现。字符串中的表情符号应该没有问题。这是一个很好的视频,解释了 Tom Scott 的表情符号,他不断接受有关表情符号的采访:https://www.youtube.com/watch?v=sTzp76JXsoY

我不是专家,如果我错了,请纠正我。

【讨论】:

    【解决方案2】:

    在您的模型中,您需要使用CharFieldTextField 来存储表情符号,这些表情符号需要作为字符传递(例如"?" 而不是直接?)。您的数据库必须使用 utf8 来支持表情符号,使用 SQL shell 连接到您的数据库,以检查当前编码运行:

    SHOW CLIENT_ENCODING;
    

    如果输出不是UTF8运行:

    SET CLIENT_ENCODING='UTF8';
    

    现在从您的 Django 设置中删除 ’OPTIONS’: {’charset’: ’utf8mb4’}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-20
      • 1970-01-01
      • 2020-04-04
      • 2019-07-15
      • 1970-01-01
      • 2017-05-05
      • 2015-07-29
      • 1970-01-01
      相关资源
      最近更新 更多