我正在制作一个带有拉丁口音的页面,例如 á, ã, ç
, 和别的。该站点从 SQL 数据库中提取数据。我在 <head>
上使用它:
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
使用此 header ,HTML 重音字符没问题,但 SQL 数据显示为 çã
而不是 ão
, 如果我改变 charset
从 ISO-8859-1 到 UTF-8,所有 HTML 重音字符都用 �(问号)显示,SQL 数据显示重音。
除了转义所有 HTML 字符或 SQL 字符之外,还有什么方法可以修复它吗?
PS:我已经试过了mysql_set_charset('utf8');
和 SET NAMES utf8
,对我都不起作用。
当您看到 �
问号时,您的文档没有以正确的编码存储(在您的情况下应该是 UTF-8)或者没有使用正确的 header 和/或元标记。
如果你想使用像 è
这样的特殊字符,你的 html 文档应该保存为 UTF-8 并作为 UTF-8 提供:
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
此外,您必须为数据库连接使用 UTF-8:
…("SET NAMES utf8");
…("SET CHARACTER SET utf8");
最后但同样重要的是,您必须为数据库本身使用 UTF-8。
正如您会注意到的,您已经在正确的道路上……您只需要“全部使用”(正如我上面所描述的),而不是一次尝试一件事然后忽略其余的部分。这是使它起作用的组合。更简单地说:如果你使用“UTF-8”,你将不得不在任何地方都考虑“UTF-8”,并在你的 html 文件、标题、元标记、数据库连接和数据库中坚持使用它。 到处使用相同的编码并坚持使用,而不是“这里有点UTF-8,那里有点ISO”。