【问题标题】:MySQL phpMyAdmin Invalid utf8mb4 character stringMySQL phpMyAdmin 无效的 utf8mb4 字符串
【发布时间】:2020-02-17 03:46:03
【问题描述】:

我无法使用 MySQL 和 phpMyAdmin 进行基本编码。我想在我的数据中使用简单的法语字符(例如 é 和 è)。如果我运行 UPDATE,字符会正确插入。但不是当我导入脚本时...

以下是我在 phpMyAdmin 上导入的脚本:

SET NAMES utf8mb4;

CREATE TABLE Proprietaire (
    idProprietaire int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    nomProprietaire varchar(255)
    )DEFAULT CHARSET=utf8mb4
;

INSERT INTO Proprietaire (nomProprietaire) VALUES
('Léanne'),
('Fabrice'),
('Pedro')
;

我在导入时遇到的 2 个错误:

Warning: #1300 Invalid utf8mb4 character string: 'E9616E'
Warning: #1366 Incorrect string value: '\xE9anne' for column 'nomProprietaire' at row 1

在phpMyAdmin上导入脚本时,接近utf8mb4的唯一选择就是utf8

表和数据库也是类似的编码

但是数据被剥离了..

我想做什么

【问题讨论】:

    标签: mysql phpmyadmin character-encoding


    【解决方案1】:

    E9 是 e-acute 的 latin1 编码。你在某个地方有 latin1。对于utf8mb4,它需要是C3A9。

    显然 phpmyadmin 是为 latin1 配置的,因为输入

    INSERT INTO Proprietaire (nomProprietaire) VALUES
    ('Léanne'), ...
    

    为您提供 E9。

    character_set_* 设置为 utf8mb4 声明客户端 (phpmyadmin) 使用 UTF-8 编码,但显然它没有。

    【讨论】:

    • 我之前尝试过 utf8 和 latin1 的组合,但没有运气。根据您的评论,我替换了 SET NAMES utf8mb4;使用 SET NAMES latin1; ,更改了我的数据库的默认编码并删除了 DEFAULT CHARSET=utf8mb4。成功了!
    • 我认为SET NAMES latin1 是它起作用的原因;其余的可能无关紧要。
    猜你喜欢
    • 2015-04-14
    • 2020-11-12
    • 1970-01-01
    • 2016-10-20
    • 2020-03-08
    • 2013-03-27
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多