我以为我了解 charset 是如何工作的,但显然还没有。
使用 eclipse 我创建了一个新的 PHP 项目。我添加了一个 index.php 文件(非常简单):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html charset=utf-8" />
</head>
<body>
<?php
try {
$dbh = new PDO('mysql:host=localhost;dbname=symfony', 'root', '');
foreach($dbh->query('SELECT * from product') as $row) {
print_r($row['description'] ."</br/>");
}
$dbh = null;
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
?>
</body>
</html>
“描述”字段是 utf8_general
我的数据库是 utf8_general
我可以在 phpMyAdmin 中读取我的数据库服务器字符 UTF-8 Unicode (utf8)
我在 Apache 配置文件中添加指令“AddDefaultCharset utf-8”
php 文件中的字符集是 utf-8
无论如何,强调的字母有问题。
为了正确显示它们,我可以:
- 更改 Apache 默认字符集:AddDefaultCharset iso-8851-1
或者
- 使用 utf8_encode PHP 函数
我的问题是:考虑到一切都是 UTF-8,我的字符串何时在执行过程中以 iso-8851-1 格式格式化?