一尘不染

错误1366(HY000):不正确的字符串值:第1行的'comment'列的'\ xF0 \ x9F \ x98 \ x9C'

mysql

这是我的sql:

INSERT INTO comments (createdate,userid,profileid,comment,status) 
VALUES (1449503167,65704,65704,'@Mr_S66 Wish I was There For The Xmas Party I Miss My Studio 66 Family 😜',15)

这是我的评论架构:

    +------------+---------------+------+-----+---------+----------------+
    | Field      | Type          | Null | Key | Default | Extra          |
    +------------+---------------+------+-----+---------+----------------+
    | commentid  | int(11)       | NO   | PRI | NULL    | auto_increment |
    | parentid   | int(11)       | YES  |     | 0       |                |
    | refno      | int(11)       | YES  |     | 0       |                |
    | createdate | int(11)       | YES  |     | 0       |                |
    | remoteip   | varchar(80)   | YES  |     |         |                |
    | locid      | int(11)       | YES  | MUL | 0       |                |
    | clubid     | int(11)       | YES  |     | 0       |                |
    | profileid  | int(11)       | YES  | MUL | 0       |                |
    | userid     | int(11)       | YES  | MUL | 0       |                |
    | legacyuser | int(11)       | YES  | MUL | 0       |                |
    | mediaid    | int(11)       | YES  |     | 0       |                |
    | status     | int(11)       | YES  |     | 1       |                |
    | comment    | varchar(4000) | YES  |     |         |                |
    | likes      | int(11)       | YES  |     | 0       |                |
    | dislikes   | int(11)       | YES  |     | 0       |                |
    | import     | int(11)       | YES  |     | 0       |                |
    | author     | varchar(50)   | YES  |     |         |                |
    +------------+---------------+------+-----+---------+----------------+

这是我的输出sql query

错误1366(HY000):不正确的字符串值:第1行的’comment’列的’\ xF0 \ x9F \ x98 \ x9C’

还不太确定如何解决这个问题。可能会过滤注释文本using php以容纳字符串值。


阅读 993

收藏
2020-05-17

共1个答案

一尘不染

您环境中的某些内容未设置为正确处理Unicode文本。

字节序列F0 9F 98 9C,在查询中错误地表示为“ðŸ”
–是Unicode字符“😜”的UTF8编码,带有伸出舌头和眨眼的脸。(也就是说,这是一个表情符号字符。)

要正确存储此字符,您需要确保:

  • 您正在MySQL连接上启用UTF8(即SET NAMES utf8mb4,或在连接时使用选项类似地启用它)。
  • 您正在运行MySQL 5.5或更高版本。
  • 表格的字符集为utf8mb4
2020-05-17