0

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

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

4

2 回答 2

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);
于 2013-09-19T22:04:07.303 回答
0

您可以使用 PHP 函数对字符串进行转义,htmlentities()以便将字符更改为它们各自的 HTML 实体,例如 è 更改为è,无论您是否指定了编码类型。

于 2013-09-19T22:04:53.960 回答