MySQL UTF8/ASCII/ISO 编码问题

Posted

技术标签:

【中文标题】MySQL UTF8/ASCII/ISO 编码问题【英文标题】:MySQL UTF8/ASCII/ISO Encoding Issue 【发布时间】:2013-07-30 16:14:16 【问题描述】:

我遇到了 mysql 表的编码问题。

我做了什么

    表设置为utf8_unicode_ci 列也被设置为 utf8_unicode_ci 在需要的地方 查看前设置“SET NAMES utf8”和元数据

数据/问题

有问题的列(评论)是从 MS word 复制和粘贴的。

使用 ’ 等字符串而不是 ' Prêt à Manger 应该读作 Pret a Manger 其他类似问题

我试过了:

UPDATE table_name SET col_name = CONVERT(CONVERT(CONVERT(col_name USING latin1) USING binary) USING utf8);

这个删减数据。例如“花费 10 英镑或更多的好评”。运行上述查询后,它会变成“ncie review costing”。

任何帮助/建议将不胜感激。 谢谢, 马特

【问题讨论】:

我有 a solution 可能对你有用。你的意思是“Prêt à Manger”,对吗? 感谢您的帮助,但是:MySQL 返回了一个空结果集(即零行),没有任何更改 我认为您的 UTF-8 数据被解释为 Latin1,而不是相反。 php 说它是 utf8,但是如果我设置了所有标题,为什么它不能在浏览器中正确显示? PHP 只说它认为它是什么,而不是它实际上是什么。当您看到单个字符扩展为多个字符时,几乎总是多字节 UTF-8 字符被错误解释为 Latin1。 【参考方案1】:

要仔细检查您的 utf8 设置是否正确,请尝试以下操作:

    登录mysql并运行mysql> show variables like 'char%';

输出应如下所示:

+--------------------------+---------- ------------+ |变量名 |价值 | +--------------------------+---------- ------------+ | character_set_client | utf8 | |字符集连接 | utf8 | |字符集数据库 | utf8 | |字符集文件系统 |二进制 | |字符集结果 | utf8 | | character_set_server | utf8 | |字符集系统 | utf8 | |字符集目录 | /usr/local/mysql/share/charsets/| +--------------------------+---------- ------------+
    然后运行mysql> show variables like 'collation%';

这应该给你:

+---------------------------------+-----------------+ |变量名 |价值 | +---------------------------------+-----------------+ | collat​​ion_connection | utf8_general_ci | | collat​​ion_database | utf8_unicode_ci | |排序服务器 | utf8_unicode_ci | +---------------------------------+-----------------+

如果没有编辑你的/etc/my.cnf/etc/mysql/my.cnf,如果你没有找到它就运行sudo find / -name my.cnf

找到它后,请按vim /etc/my.cnfi 插入文本并添加

[mysqld] 整理服务器 = utf8_unicode_ci init-connect='设置名称 utf8' 字符集服务器 = utf8

随意注释掉前一个/旧的 [mysqld] 块或行。

esc保存文件,然后输入:wq并按enter

    重启mysqlservice mysql restartservice mysqld restart

希望对您有所帮助。

【讨论】:

以上是关于MySQL UTF8/ASCII/ISO 编码问题的主要内容,如果未能解决你的问题,请参考以下文章

mysql之字符编码问题

mysql set names 命令和 mysql 字符编码问题

关于Mysql的编码问题

mysql存储乱码之编码问题

MySQL数据库在WIN系统CMD下的编码问题

mysql乱码问题