在这里,在我的表中,我有一个列名为description。根据我的错误,我已经尝试了许多解决方案,从SO改变排序规则类型。我试过下面的收藏
description
1) utf8mb4_unicode_ci 2) utf8_general_ci
在这里,显示来自your_table的完整列;
有谁知道\'\\xC3\'这种类型的字符串的正确排序规则是什么?
\'\\xC3\'
omvjsjqw1#
为了支持完整的UTF-8 Unicode,例如在您的情况下,它是字符À,您应该使用utf8 mb 4和utf8mb4_unicode_ci utf8已经过时。你可以在https://mathiasbynens.be/notes/mysql-utf8mb4找到完整的解释。您可以像这样检查表的当前排序规则:
SHOW FULL COLUMNS FROM your_table;
我假设您的描述列的类型为TEXT,否则您可能需要更改类型。要更改表格默认字符集,可以用途:
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4;
但这不会更改列的排序规则。要更改列的排序规则,应用途:
ALTER TABLE your_table MODIFY description TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3pvhb19x2#
先试试这个
ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8
或如果上述解决方案不起作用,则在连接到数据库后执行以下操作
SET NAMES 'utf8'; SET CHARACTER SET utf8;
yv5phkfx3#
我在同一个问题上纠结了很久。然后这个功能帮了我
function replacebadchar($str) { global $conn; $str = UConverter::transcode($str, 'ISO-8859-1', 'UTF-8'); $str = UConverter::transcode($str, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']); $str = UConverter::transcode($str, 'ISO-8859-1', 'UTF-8', ['to_subst' => '?']); return mysqli_real_escape_string($conn, $str); }
3条答案
按热度按时间omvjsjqw1#
为了支持完整的UTF-8 Unicode,例如在您的情况下,它是字符À,您应该使用utf8 mb 4和utf8mb4_unicode_ci utf8已经过时。
你可以在https://mathiasbynens.be/notes/mysql-utf8mb4找到完整的解释。
您可以像这样检查表的当前排序规则:
我假设您的描述列的类型为TEXT,否则您可能需要更改类型。
要更改表格默认字符集,可以用途:
但这不会更改列的排序规则。要更改列的排序规则,应用途:
3pvhb19x2#
先试试这个
或如果上述解决方案不起作用,则在连接到数据库后执行以下操作
yv5phkfx3#
我在同一个问题上纠结了很久。然后这个功能帮了我