【问题标题】:Incorrect string value: \'\\xC3\' for column \'description\' at row 1 in mySql不正确的字符串值:mySql 中第 1 行的列 \'description\' 的 \'\\xC3\'
【发布时间】:2020-04-16 07:38:01
【问题描述】:

在这里,在我的表中,我有一个列名为description

根据我的错误,我尝试了SO 的许多解决方案来更改排序规则类型。

我试过下面的集合

1) utf8mb4_unicode_ci
2) utf8_general_ci

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

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

【问题讨论】:

    标签: mysql laravel laravel-5


    【解决方案1】:

    要支持完整的 UTF-8 Unicode,例如表情符号,在您的情况下,字符 À 您应该使用 utf8mb4 并且 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;
    

    【讨论】:

    • 很好解释 :) 我跟着你的题词,但我仍然得到同样的错误。查看我上传的编辑答案SHOW FULL COLUMNS FROM your_table;
    • 我对 Laravel 没有任何经验,但也许您需要更改数据库配置中的排序规则和字符集,以便连接 charset utf8mb4 和排序规则 utf8mb4_unicode_ci。见laravel.com/docs/7.x/database#read-and-write-connections
    • 我采用了另一种方式,因为无论我得到什么字符串,我都会将该字符串转换为 base64_encode 并将其存储为字符串。而获取显示我转换base64_decode。谢谢你的帮助:)
    • 没问题很乐意帮忙!
    【解决方案2】:

    先试试这个

    ALTER TABLE your_database_name.your_table CONVERT TO CHARACTER SET utf8
    

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

    SET NAMES 'utf8';
    SET CHARACTER SET utf8;
    

    【讨论】:

    • 谢谢你的回答,它给了我同样的错误。
    猜你喜欢
    • 2021-08-18
    • 1970-01-01
    • 2023-03-17
    • 2015-01-24
    • 2019-07-27
    • 1970-01-01
    • 2014-10-27
    • 2014-07-03
    • 1970-01-01
    相关资源
    最近更新 更多