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显示汉字的主要内容,如果未能解决你的问题,请参考以下文章