我知道,有很多关于编码的问题,但经过很多检查,不幸的是问题仍然存在。
我将笔记本电脑中的PHP / HTML文件(zip)和MySQL-Dump(zip)导出到PC(不使用git)。 每个文件都是UTF-8 ,每个字母都显示在编辑器和数据库(PHPMyAdmin)中。
但是,当我在任何浏览器中打开项目时,某些字母(ä,ü,ü,…)显示错误。
在HTML头我有这个设置字符集的行:
<meta charset="utf-8">
用这一行,硬编码的字母显示正确,但数据库中的值显示错误。
当我删除行时,我得到相反的结果:硬编码是错误的,数据库值是正确的。
我很困惑,因为整个内容是UTF-8,但在PC上显示错误,但它在笔记本电脑上工作。 我想这个问题是服务器端,或者我在导出过程中做了错误的事情。
我想避免PHP函数utf8_encode()和utf8_decode()。
有谁知道可能的解决scheme?
确保你设置了你的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的字符集。 通过这种方式准备连接对象,使得您独立于数据库配置,必要时连接甚至可以转换返回/发送的数据。