我正在尝试输出存储在MySQL数据库中的产品信息,但它正在写出一些奇怪的字符,比如里面有问号的钻石。
我认为它可能是编码/ UTF8问题,但我已经指定了我想要的编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这是对的吗?我应该检查什么?
答案 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
SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'
如果你遵循所有4点,你应该永远不会有任何破碎编码的问题。
答案 3 :(得分:1)