mysql显示汉字

Posted

技术标签:

【中文标题】mysql显示汉字【英文标题】:Mysql display chinese characters 【发布时间】:2011-12-09 03:04:45 【问题描述】:

我长期使用php + mysql (phpmyadmin) 构建中文内容(utf-8) 的网站。

在输入表格时,也从db生成输出php,中文单词显示良好;但是当我查看数据库时,虽然有时它们是正常的汉字,但它们不是(变成奇怪的字符串),这让我注意到,mysql处理和输入数据的方式并不总是utf-8。

网上有高手提到,mysql是用来记录latin1的输入数据的;不过,我注意到 phpmyadmin 中现有的字符集是 utf-8...

是否有可靠的方法来检测出现在 phpmyadmin 表格单元格中的汉字的编码格式?

另外,除了在页头提到之外,有没有什么方法可以确保输入到db的数据是utf-8而不是其他的?

谢谢。

【问题讨论】:

检查 phpmyadmin 连接编码以及 phpmyadmin 显示编码。它们是否设置为 utf-8? 如果您在创建表时定义了 charset utf8 并且还应用了 mysql_set_charset('utf8',$con);当连接到mysql时,它应该可以工作。至于无法在某些客户上正确显示 John 的评论对我来说似乎是合乎逻辑的,可以完成这项工作。 嗨,让我给你看看输入到 db 的“utf-8”内容,我从单元格中复制了这些: �ּ֯��\�U�E�s����Ӥl�D��123���a�U 嗨john,我想在连接文件中,phpadmindisplay,都是utf-8设置的…… 【参考方案1】:

人们在这方面遇到的最大问题是他们在连接数据库时没有告诉 MySQL 他们正在发送/期待 UTF-8 编码的数据,因此 MySQL 认为它应该处理 latin1 编码的数据并转换相应地。连接数据库后发出命令SET NAMES utf8或使用mysql_set_charset

【讨论】:

mysql_select_db($database_conn_impossible, $conn_impossible); $set_charset = '设置名称 utf8'; mysql_query($set_charset, $conn_impossible); 对不起,在连接文件中,我已经包含了上面的内容,这是你提到的第一种方式吗?另外,我应该在哪里应用 mysql_set_charset?谢谢。 好的,那么这个解决方案不适用。在黑暗中刺伤... :) mysql_set_charset 本质上与 SET NAMES 做同样的事情。【参考方案2】:

就我而言,只是因为htmlentities(); 解决方案是将echo htmlentities($email_db); 更改为echo htmlentities($email_db, ENT_COMPAT, 'UTF-8');

【讨论】:

以上是关于mysql显示汉字的主要内容,如果未能解决你的问题,请参考以下文章

Java处理数据库Mysql汉字显示乱码问题

servlet从mysql中取数据时出现的汉字编码问题

如何将mysql中枚举类型的数值在前台遍历为汉字

mysql怎么汉字变 ??

从mysql数据库读出的数据怎么是问号(?)

用Navicat for MySQL往数据表中添加数据时汉字出现乱码