该字符é
在 Chrome 中显示为问号。我正在使用 PHP 从 MySQL 获取内容以输出到 HTML。我尝试使用mb_detect_encoding()
来确定内容的编码,有些是 ASCII,有些是 UTF-8。为什么它们有不同的编码?是 MySQL 使它们与众不同还是 PHP 这样做了?
包含 的内容é
被编码为 UTF-8。但如果我utf8_encode()
在内容上使用,字符会正确显示。如果它已经是 UTF-8,为什么使用utf8_encode()
它可以正确显示?
您必须将与数据库的连接定义为 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);
您可以使用 PHP 函数对字符串进行转义,htmlentities()
以便将字符更改为它们各自的 HTML 实体,例如 è 更改为è
,无论您是否指定了编码类型。