MySQL phpMyAdmin 无效的 utf8mb4 字符串

Posted

技术标签:

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

我无法使用 mysqlphpMyAdmin 进行基本编码。我想在我的数据中使用简单的法语字符(例如 é 和 è)。如果我运行 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

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

但是数据被剥离了..

我想做什么

将 COLLATE utf8mb4_unicode_ci 添加到需要特殊字符的列中 -> 什么也没做 修改为 DEFAULT CHARSET=utf8 和 DEFAULT CHARSET=latin1。 Latin1 将重音替换为 ?而 utf8 只是简单地删掉了这个词 Google 'E9616E',一无所获?? ALTER DATABASE mydbname CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -> 什么都没做 我检查的链接:How to make MySQL handle UTF-8 properly、Characters appear as question marks using MySQL、MySQL silently replaces UTF chars with literal question marks、Show and change MySQL default character set

【问题讨论】:

【参考方案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 是它起作用的原因;其余的可能无关紧要。

以上是关于MySQL phpMyAdmin 无效的 utf8mb4 字符串的主要内容,如果未能解决你的问题,请参考以下文章

phpmyadmin 显示奇怪的字符(utf8)

phpmyadmin 为 mysql utf8_bin 排序列显示数字或 blob?

MySQL Workbench 有效,而 phpmyadmin 无效

phpmyadmin - 无法连接:无效设置

MySQL Query 在 PhpMyAdmin 中有效,但在 JAVA Eclipse 中无效

MySQL 5 的 UTF8 问题