MySQL uft8_unicode_ci

Posted

技术标签:

【中文标题】MySQL uft8_unicode_ci【英文标题】: 【发布时间】:2011-04-08 03:30:16 【问题描述】:

我想确保正在写一些东西。

我的数据库表是 utf8_unicode_ci,我的网站编码和标题是 utf-8 等等。

我做了一个测试,在我的留言簿中输入了这个:

一种 ʵßăāÇϢϞﻨ☺ ▓ ▓ẻ ▓ẻṎ 

现在很好,它像它应该显示在网页上一样,我测试了其他语言等,但是在 phpmyadmin 中检查它时,它在 phpmyadmin 的文本字段值区域中显示为:

一种 ʵßăÄÇϢϞﻨ☺ ▓▓ẻ▓ẻṎ ۞ݤ

谁能告诉我为什么在 phpmyadmin 中会这样显示?我的意思是它是这样存储的,它是正常的还是应该完全按照我输入的方式存储?它也发生在所有外语上,如中文等。基本上都是外语。

我检查以确保并在 phpmyadmin 中显示:

mysql 连接排序规则:utf8_unicode_ci 和 MySQL 字符集:UTF-8 Unicode (utf8)

也许是 phpmyadmin?如果是这样,我必须怎么做才能让 phpmyadmin 正确显示 utf-8,或者 MySQL 没有正确存储它,尽管它在输出到网页时显示正常。

【问题讨论】:

您好,他们已经设置了这个字符集。 @Japan utf8_unicode_ci 是排序规则,而不是字符集。字符集是utf8 @col 没错,我会纠正它,顺便说一句。 【参考方案1】:

不,它不是 PhpMyAdmin。它一直都在使用 UTF-8。

您的 PHP 应用程序本身中的数据库连接可能未使用 UTF-8。尽管从一侧传输到另一侧的字节是相同的,但它们使用错误的字符集进行编码和解码,即根据Mojibake 的模式最有可能是 ISO-8859-1 的平台默认字符集字符(UTF-8 对/三元组的第一个字符通常变为 ÃÂÄ 等)。

您需要让 PHP 使用 mysql_set_charset() 通知 MySQL 您正在处理 UTF-8 数据:

mysql_set_charset("utf8");

请注意,这只适用于 PHP >= 5.2.3 和 MySQL >= 5.0.7,否则您需要执行 SET NAMES 查询,另请参阅前面链接的 PHP 手册。另请注意,您需要截断并用新数据重新填充数据库,如果不使用一些 SQL 脚本将其转换回来,您将无法在网页上重新显示它。

【讨论】:

嗨,我把你上面给出的内容放在将数据插入数据库的 mysql_query 之前,它仍然没有显示仪式。此外,我认为我不需要像 phpmyadmin 显示的那样指定: MySQL 连接排序规则:utf8_unicode_ci 和 MySQL 字符集:UTF-8 Unicode (utf8) 不确定为什么它不起作用?谢谢 如果任何东西在 PHP 端看起来“正确”,但在 DB 端却没有,那么这确实是唯一可能的原因(除非 PhpMyAdmin 本身有一些错误,但没有想到这一点,但是您应该检查其响应标头以确保安全)。你读过我后来添加的两个注释吗? 嘿,对不起,我犯了一个小错误。我自动写了UTF-8,但它应该是utf8(MySQL可能在这方面非常严格)。再试一次。 嗨 BalusC,我的 MySQL 版本来自 phpmyadmin:MySQL 客户端版本:5.0.51a 另外我不知道您的意思是“另请注意,您需要截断并用新数据重新填充数据库,如果不使用一些 SQL 脚本将其转换回来,您将无法在网页上重新显示它“谢谢 我很高兴得到您的帮助,每个人都非常友善,非常支持!谢谢!

以上是关于MySQL uft8_unicode_ci的主要内容,如果未能解决你的问题,请参考以下文章

mysql(设置/更改mysql密码,连接MySQL,MySQL常用命令,MySQL两种引擎区别)

MySQL教程

MySQL

MySQL

有什么学习MySQL的好教程吗?

MySql 详解