字符编码问题。单一来源在单页上显示多种方式

时间:2011-02-17 03:22:08

标签: php mysql utf-8 character-encoding

我有一个奇怪的字符编码问题。

我有一个页面,从我的数据库中提取文本并在页面上显示一次,在标题中显示一次,在jquery ui模式对话框中显示一次。

角色是一个带有波浪号的n。它来自数据库中的相同字段/列/记录。

在页面上没问题。在标题中,它显示为钻石/问号。在对话框中,它显示为菱形/问号。在上一页(它是CMS,因此所有标题都相同)中,它在页面中显示为菱形/问号。

那我错过了什么?

Charset和collat​​ion在MYSQL中设置为UTF8。

页眉是UTF8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我甚至在php中做过这个:

ini_set('default_charset', 'utf-8');
header('Content-Type: text/html; charset=utf-8');
header('Accept-Charset: utf-8');
header('Accept: text/html');

mb_language('uni');
mb_internal_encoding('UTF-8');

iconv_set_encoding("input_encoding", "utf-8");
iconv_set_encoding("internal_encoding", "utf-8");
iconv_set_encoding("output_encoding", "utf-8");

所以,我可以理解它是否在所有地方都没有显示出来,但是在一个页面上不同的是弄乱了我的心灵

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

所以,我有点不那么聪明。我首先说,添加SET NAMES修复了许多问题。非常感谢你的帮忙。从现在开始,我将把这一点放到我的所有连接脚本中:

mysql_query("SET NAMES UTF8");

我发现我的错误就在这一行:

echo htmlentities($person_name);

所以,一旦所有的东西都像utf-8一样正确,我仍然得到了

  

MUA±盎司

因为您似乎无法使用htmlentities()转换3和4字节的utf8字符。请参阅以下链接。

http://www.php.net/manual/en/function.htmlentities.php#96648

此问题也在以下讨论:

http://www.php.net/manual/en/function.htmlentities.php#92105

感谢所有人的帮助。