【问题标题】:Mysql display chinese charactersmysql显示汉字
【发布时间】: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设置的……

标签: php mysql character-encoding phpmyadmin cjk


【解决方案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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-21
    • 2011-06-27
    • 2014-08-09
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多