2012-12-28 123 views
11

可能重复:
UTF-8 all the way throughPHP MySQL的字符集UTF8问题

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

我遇到了字符集问题。

我看到数据库的人不得不在UTF8有的一些表格中的latin1

所以我想给所有的表转换成UTF8。

我做了一个表(也是这个表的字段现在是utf8),但没有成功。

我正在使用普通的mysql连接。我必须把任何配置说它必须连接到utf8到数据库?如果是女巫呢?

在我的HTML我有:

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

它看起来像一些字母作品和其他显示问号。 例如,它无法显示此“即是此不同:”

+0

哪些字符在DB显示为问号? –

+0

不要发疯。所以再次检查你的问题,编辑它,然后问一个问题。 *“看起来有些字母有效,其他字母显示问号。”* - 这样的句子没有帮助。我敢打赌,他们也没有帮助。 – hakre

+0

还请联系获取文档代码的人员。还搜索您的问题。例如。关于mysql字符配置的部分已经被问及并回答过 - 你不需要再问,你可以搜索。例如。 [是否使用“SET NAMES”](http://stackoverflow.com/q/1650591/367456)和[在My​​SQL中使用SET NAMES utf8?](http://stackoverflow.com/q/2159434/367456)。 – hakre

回答

29

试试这个

<?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); 
?> 
+0

我这样做,我也不得不删除所有使用的htmlentities()和utf8_encode()函数。谢谢 – Samuele