这真的是我的疯子......
所有相关的 PHP 输出脚本都设置了标题(在这种情况下只有一个文件 - 主 php 脚本):
header("Content-type: text/html; charset=utf-8");
HTML 元设置在 head 中:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
所有 Mysql 表和相关列设置为:
utf8_unicode_ci Unicode (multilingual), case-insensitive
我一直在编写一个类来进行一些翻译。当该类使用 fopen、fputs 等写入文件时,一切正常,正确的字符出现在我的输出文件中(它们被写为 php 数组并以 . php 或 .htm 文件。eval() 正确地返回 .htm 文件,当我想使用它们时只包含 .php 文件。一切都很好。
可能是当我尝试为我的数据库创建翻译条目时。我的数据库连接类在初始连接之后直接添加了以下行:
mysql_query("SET NAMES utf8, character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
我没有看到正确的字符,而是得到了您期望在数据库中使用错误的字符集的常见问题。例如:
Propriétés
代替:
propriétés
甚至不要让我开始使用俄语、日语等字符!但是使用 UTF8 不应该使任何单一语言字符集成为问题......
我错过了什么?我知道它不是 PHP,因为该站点从包含的翻译 .php 或 .htm 文件中显示了正确的字符,只有在我处理 MySQL DB 时才会遇到这些问题。PHPMyAdmin 用错误的字符显示条目,所以我假设它发生在 PHP“写入”到 MySQL 时。已经在堆栈上检查了类似的问题,但没有一个答案(所有这些都得到了照顾)给我任何线索......
此外,任何人都对使用 include $filename 与 eval(file_get_contents($filename)) 的速度差异有想法。