PHP MySQL数据库怪字符

时间:2009-12-15 21:31:24

标签: php mysql utf

我正在尝试输出存储在MySQL数据库中的产品信息,但它正在写出一些奇怪的字符,比如里面有问号的钻石。

我认为它可能是编码/ UTF8问题,但我已经指定了我想要的编码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这是对的吗?我应该检查什么?

4 个答案:

答案 0 :(得分:20)

如果只有来自数据库的数据中包含奇怪的字符,请确保MySQL连接也使用UTF8:

mysql_query("SET NAMES UTF8");

在任何其他查询之前。否则,如果字符也出现在“手写”文件中,请确保文件在编辑器中保存为UTF-8。您还可以尝试通过PHP设置charset标头:

header('Content-type: text/html; charset=UTF-8');

还要确保要查询的表中的所有字段都设置为某些UTF-8变体,例如utf8_general_ci

答案 1 :(得分:4)

上次遇到麻烦时,解决方案与Tatu Ulmanen所说的相似,但略有不同......

因此,如果他的解决方案不起作用,请尝试替换

mysql_query("SET NAMES UTF8");

mysql_query("SET NAMES latin1");

我这样说是因为MySql中的默认字符集是latin1,这就是大多数时候使用的字符....

希望有所帮助...

答案 2 :(得分:4)

我假设您希望结果为utf8

  • 保存你的php脚本utf8编码
  • 确保您的http标头(或某些元标记)告知输出为utf8
  • MySql中的所有表格应为utf8
  • 最后但并非最不重要的是,客户端和服务器之间的连接应该是utf8。 (这可以在php.ini设置中的某处处理,或者通过对db进行以下查询:SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'

如果你遵循所有4点,你应该永远不会有任何破碎编码的问题。

答案 3 :(得分:1)