输出到HTML时,有些字母混乱

时间:2013-09-19 21:55:10

标签: php html mysql encoding utf-8

字符é在Chrome中显示为问号。我正在使用PHP从MySQL获取内容以输出到HTML。我尝试使用mb_detect_encoding()来确定内容的编码,有些是ASCII,有些是UTF-8。为什么他们有不同的编码? MySQL是否使它们不同,或者PHP是否正在这样做?

包含é的内容编码为UTF-8。但是,如果我在内容上使用utf8_encode(),则字符会正确显示。如果它已经是UTF-8,为什么使用utf8_encode()使它正确显示?

2 个答案:

答案 0 :(得分:0)

您必须将数据库的连接定义为utf8:

// Setup your connection
$connection = mysql_connect('localhost', 'user', 'pw');
mysql_select_db('yourdb', $connection);
mysql_query("SET NAMES 'utf8'", $connection);

// now you get utf-8 encoded stuff
$query = sprintf('SELECT name FROM place where id = 1');
$result = mysql_query($query, $connection);
$result = mysql_fetch_assoc($result);

答案 1 :(得分:0)

您可以使用htmlentities() PHP函数转义字符串,以便将字符更改为各自的HTML实体,例如è更改为&egrave;,无论您是否指定编码类型。< / p>