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%';
这应该给你:
+---------------------------------+-----------------+ |变量名 |价值 | +---------------------------------+-----------------+ | collation_connection | utf8_general_ci | | collation_database | utf8_unicode_ci | |排序服务器 | utf8_unicode_ci | +---------------------------------+-----------------+如果没有编辑你的/etc/my.cnf
或/etc/mysql/my.cnf
,如果你没有找到它就运行sudo find / -name my.cnf
找到它后,请按vim /etc/my.cnf
按i
插入文本并添加
随意注释掉前一个/旧的 [mysqld] 块或行。
按esc
保存文件,然后输入:wq
并按enter
-
重启mysql
service mysql restart
或service mysqld restart
希望对您有所帮助。
【讨论】:
以上是关于MySQL UTF8/ASCII/ISO 编码问题的主要内容,如果未能解决你的问题,请参考以下文章