如何识别字符串是否包含无法使用utf8-mb4字符集存储的特殊字符

pri*_*iya 10 java encoding utf-8 character-encoding

请参阅此推文和以下主题,我们正在尝试将类似的推文存储到数据库中.我无法在MySQL中存储这条推文,我想知道如何识别,如果字符串包含一个无法由utf8-mb4字符集处理的字符,那么我可以避免存储它.

Tas*_*kos 4

给您带来问题的字符是U+1F603 SMILING FACE WITH OPEN MOUTH,它的值无法用 16 位表示。当转换为 UTF-8 时,字节值为f0 9f 98 83,这应该适合utf8mb4MySQL 字符集列,因此我同意其他评论者的观点,即这看起来不是 MySQL 问题。如果您可以尝试重新插入此推文,请记录 MySQL 接收到的所有 SQL 语句,以确定字符在发送到 MySQL 之前或之后是否已损坏。

  • 我们知道这是您的诊断,但我们认为这是错误的;因此,如果您可以添加更多详细信息来支持或反驳您的根本原因分析,将会有所帮助。您收到错误消息吗?您能按照要求发布生成的 SQL 吗? (2认同)
  • priya,如果你想简单地检查推文,方法很简单 - 检查推文中的任何字符是否具有大于 3 个字节的 UTF-8 表示形式。然而,正如 @tripleee 提到的,我们相信 MySQL 可能没有问题。 (2认同)