3

我正在尝试使用我拥有的数据库,但我无法在其中显示中文字符。该数据库实际上是一个MS Access文件,我用程序将其转换为mysql。无论如何,很多行中都有汉字,我无法让它们在任何浏览器中正确显示。

否则我可以正常显示汉字,如果我使用phpmyadmin查看表格也可以看到它们。我四处寻找解决此问题的方法,在我看来,通常的解决方法是执行“SET NAMES 'utf8'”查询,但这只会将显示的字符从问号更改为其他奇怪的符号。

如果我查看 phpmyadmin 排序规则是 utf8_general_ci 用于数据库和所有表。

有任何想法吗?

4

2 回答 2

4

对于 MySQL DB,这解决了这个问题:

$dbh = mysql_connect($hostname, $username, $password);    
mysql_select_db($db, $dbh);    
mysql_set_charset('utf8', $dbh);

PDO解决方案:

$dbh = new PDO('mysql:host=$hostname;dbname=$db;charset=UTF-8', $username, $password);
于 2012-05-20T15:36:51.633 回答
0

您必须确保以下几点:

  • 在导入之前,您要使用的表的字符集必须设置为 utf8。您还必须确保导入的数据实际上包含正确的 utf8 编码字符。
  • 在导入时,您必须指定已建立会话的字符集(例如通过运行SET NAMES utf8;
  • 导入后,您应该编写一个小脚本来读取您知道其中包含特殊字符的行;脚本必须:
    • 使用header('Content-Type: text/plain; charset=utf-8');或您希望设置的任何 mime 类型
    • 为已建立的 MySQL 连接设置正确的字符集(utf8)

如果一切顺利,它应该可以正确显示您的数据。

于 2012-05-20T15:47:29.277 回答