3

我知道,有很多关于编码的问题,但是在检查了很多之后,不幸的是问题仍然存在。

我将 PHP/HTML 文件 (zip) 和 MySQL-Dump (zip) 从笔记本导出到 PC(不使用 git)。每个文件都是UTF-8,每个字母都显示在编辑器和数据库 (PHPMyAdmin) 中。

但是当我在任何浏览器中打开项目时,某些字母(ä、ü、ü、...)显示错误。

在 HTML 头中,我有这一行用于设置字符集:

<meta charset="utf-8">

使用这一行,硬编码的字母显示正确,但数据库中的值显示错误。

当我删除该行时,我得到相反的结果:硬编码是错误的,数据库值是正确的。

我很困惑,因为整个内容都是 UTF-8,但它在 PC 上显示错误,但它在 Notebook 上有效。我想问题出在服务器端,或者我在导出过程中做错了什么。

我想避免使用 PHP 函数 utf8_encode() 和 utf8_decode()。

有谁知道可能的解决方案?

4

1 回答 1

5

确保设置 PHP 数据库连接对象的字符集。这应该在查询数据库之前完成。

// tells the mysqli connection to deliver UTF-8 encoded strings.
$db = new mysqli($dbHost, $dbUser, $dbPassword, $dbName);
$db->set_charset('utf8');

// tells the pdo connection to deliver UTF-8 encoded strings.
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=utf8";
$db = new PDO($dsn, $dbUser, $dbPassword);

上面的示例显示了如何为 SQLI 或 PDO 设置字符集。以这种方式准备连接对象,使您独立于数据库配置,如有必要,连接甚至会转换返回/发送的数据。

于 2013-07-09T15:59:06.987 回答