PHP MySQL字符集UTF8问题。

14

可能是重复问题:
UTF-8 all the way through

我正在开发一个别人已经开发过的网站的一些新功能。

我遇到了字符集的问题。

我看到数据库中有一些表格是使用 utf8 编码,而另一些则是 latin1 编码。

因此,我想要将所有表格都转换为 utf8 编码。

我已经成功地将一个表格(以及该表格的字段)转换为 utf8,但是还有问题。

我正在使用正常的 mysql 连接。我需要设置某些配置来告诉它必须连接到 utf8 的数据库吗?如果是的话,应该设置哪些配置?

在我的 html 中,我有:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

看起来一些字母可以正常显示,而另一些则显示问号。例如它无法显示这个 ’,它与这个不同:'


在数据库中显示为问号的是哪些字符? - Farid Movsumov
请编辑您的问题并确切地提出问题,不要让人感到困惑。像“看起来有些字母可以工作,而其他字母则显示问号”这样的句子是没有帮助的。我敢打赌对您来说也没有帮助。 - hakre
同时联系您获取代码的人以获取文档。同时搜索您的问题。例如,关于mysql字符配置的部分之前已经被问过并得到了答案 - 您不需要再次提问,只需搜索即可。例如是否使用“SET NAMES”在MySQL中使用SET NAMES utf8? - hakre
4
也许 mysql_query('SET NAMES UTF8;'); 对你有用。在我遇到一些涉及 PHP/MySQL + UTF-8 的问题时,它帮助了我解决问题。我不知道你具体的问题,所以这可能不是你想要的。 - Patrickdev
1个回答

35

试试这个

<?php

   header('Content-Type: text/html; charset=utf-8');
?>

然后在连接中

<?php
 $dbLink = mysql_connect($argHost, $argUsername, $argPassword);
    mysql_query("SET character_set_results=utf8", $dbLink);
    mb_language('uni'); 
    mb_internal_encoding('UTF-8');
    mysql_select_db($argDB, $dbLink);
    mysql_query("set names 'utf8'",$dbLink);
?>

我已经完成了这个任务,同时还需要删除所有使用的htmlentities()和utf8_encode()函数。谢谢。 - Samuele

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接