这真的是我的坚果......
所有相关的PHP输出脚本都设置了标题(在这种情况下只有一个文件 - 主要的php脚本):
header("Content-type: text/html; charset=utf-8");
HTML元设置在头部:
<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文件一样。一切都很好。
Prob是我尝试为我的数据库创建翻译条目的时候。我的数据库连接类在初始连接后直接添加了以下行:
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数据库时才会遇到这些问题。 PHPMyAdmin显示带有错误字符的条目,因此我假设它在PHP“写入”MySQL时发生。在堆栈上检查了类似的问题,但没有一个答案(所有这些都得到了解决)给了我任何线索......
此外,任何人都有使用include $ filename vs eval(file_get_contents($ filename))对速度差异的想法。
答案 0 :(得分:1)
以下是确保您能够很好地展示这些字符的所有内容:
/* HTTP charset */
header("Content-Type:text/html; charset=UTF-8");
/* Set MySQL communication encoding */
mysql_set_charset("UTF8");
您还需要将DB编码设置为正确的编码,也需要将每个表的编码和字段的编码设置为
最后但并非最不重要的是,您的php文件的编码也应匹配。
答案 1 :(得分:1)
你说你正在看到“你期望使用错误的字符集的通常情况”。但实际上,这个crud是通过在已经存在的UTF8字符串上使用utf8_encode()来创建的,所以很可能你没有在任何地方使用“错误编码”,但是超过你编码为UTF8的次数。
您可以查看我为解决此类问题所做的库:
答案 2 :(得分:0)
mysql中有一个mysql_set_charset('utf8');
。在另一个查询的开头运行查询。