mysql 一般错误:3988无法将参数从排序规则utf8_unicode_ci转换为utf8mb4_0900_ai_ci

1zmg4dgp  于 2022-10-31  发布在  Mysql
关注(0)|答案(2)|浏览(1072)

我试图保存一个字符串包含html的电子邮件在文本类型列。但我得到这个错误。我找不到哪里是不兼容的字符。有任何清理方法,我可以用来转换所有utf8_unicode_ciutf8mb4_0900_ai_ci

ztyzrc3y

ztyzrc3y1#

您可以在将文本插入到正确的排序规则之前对其进行转换

SELECT CONVERT('abc' USING utf8mb4)  COLLATE  utf8mb4_0900_ai_ci;
mwg9r5ms

mwg9r5ms2#

我的具体问题实际上是由substr引起的。

echo substr('ããããã', 0, 5);
//ãã�

它使用utf8_encode,得到子字符串,然后使用utf8_decode。在这个例子中,字符串“ãããã”变成“° ° ",然后被裁剪成“°",当应用utf8_encode时,它以“° ° "结束。
我使用Laravel辅助子串而不是php子串解决了这个问题。

相关问题