将json列转换为utf8mb4

时间:2018-04-04 09:13:40

标签: php mysql json alter utf8mb4

在我使用的mysql插入请求中($text$_POST发送,而MESSAGE列为JSON格式):

$data = '{"mytext":".'$text'."}';

INSERT INTO xxxxx (MESSAGE) VALUES('$mytext');

我遇到了以下问题:

  

有些笑脸显示确定,但有些带有"?"

我在这里搜索了一个答案,发现必须在数据库,表格和列上设置utf8mb4。

问题是当我尝试以下内容时包含我注册的消息:

ALTER TABLE xxxxx CHANGE column_name column_name JSON CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

上述结果

  

您的SQL语法有错误;

我认为只能在Varchar()列。

你对我如何使这项工作有任何想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

  

有些笑脸显示确定,但有些带有"?"

首先找出引起问题的问题"问号"来自Trouble with UTF-8 characters; what I see is not what I stored

特别是:

  • 要存储的字节不编码为utf8mb4。解决这个问题。
  • 数据库中的列不是CHARACTER SET utf8mb4。解决这个问题。 (使用SHOW CREATE TABLE查看当前的内容。)
  • 另外,检查读取时的连接是否为UTF-8。

进一步讨论,请提供

    在尝试SHOW CREATE TABLE之前,
  • ALTER。 (我怀疑VARCHAR目前是CHARACTER SET utf8。)
  • 完整的错误消息。 (我猜它说"接近' CHARACTER ......'"。)
  • 您正在使用的MySQL版本。

手册说" MySQL使用utf8mb4字符集和utf8mb4_bin排序规则处理JSON上下文中使用的字符串。",我推断您不需要为数据类型{{1}指定字符集或排序规则}。