我正在尝试输出存储在 MySQL 数据库中的产品信息,但它正在写出一些奇怪的字符,例如内部带有问号的菱形。
我认为这可能是编码/UTF8 问题,但我已经指定了我想要的编码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
这是正确的吗?我应该检查什么?
如果只有来自数据库的数据中有奇怪的字符,请确保 MySQL 连接也是 UTF8 使用:
mysql_query("SET NAMES UTF8");
在任何其他查询之前。否则,如果字符也出现在“手写”文件中,请确保文件在编辑器中保存为 UTF-8。您也可以尝试通过 PHP 设置字符集标头:
header('Content-type: text/html; charset=UTF-8');
还要确保您正在查询的表中的所有字段都设置为某些 UTF-8 变体,例如utf8_general_ci
.
我假设你希望结果是 utf8
SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'
如果您遵循所有 4 点,您将永远不会遇到编码损坏的任何问题。
上次我遇到那个麻烦时,解决方案与 Tatu Ulmanen 说的类似,但略有不同......
因此,如果他的解决方案不起作用,请尝试更换
mysql_query("SET NAMES UTF8");
和
mysql_query("SET NAMES latin1");
我这样说是因为 MySql 中的默认字符集是 latin1,这是大多数时候使用的......
希望有帮助...
附和大图的话。
这是关于编码的很好的背景读物:每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最小值(没有借口!)