字符串值不正确:mySql中第1行的列“description”的“\\xC3”

vbopmzt1  于 2023-05-05  发布在  Mysql
关注(0)|答案(3)|浏览(205)

在这里,在我的表中,我有一个列名为description
根据我的错误,我已经尝试了许多解决方案,从SO改变排序规则类型。
我试过下面的收藏

1) utf8mb4_unicode_ci
2) utf8_general_ci

在这里,显示来自your_table的完整列;

有谁知道\'\\xC3\'这种类型的字符串的正确排序规则是什么?

omvjsjqw

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;
3pvhb19x

3pvhb19x2#

先试试这个

ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8

如果上述解决方案不起作用,则在连接到数据库后执行以下操作

SET NAMES 'utf8';
SET CHARACTER SET utf8;
yv5phkfx

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);
}

相关问题