MySQL phpMyAdmin 无效的 utf8mb4 字符串
Posted
技术标签:
【中文标题】MySQL phpMyAdmin 无效的 utf8mb4 字符串【英文标题】:MySQL phpMyAdmin Invalid utf8mb4 character string 【发布时间】: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
表和数据库也是类似的编码
但是数据被剥离了..
我想做什么
将 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 为 mysql utf8_bin 排序列显示数字或 blob?
MySQL Workbench 有效,而 phpmyadmin 无效