如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1 [重复]
Posted
技术标签:
【中文标题】如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1 [重复]【英文标题】:Question mark characters on HTML if I use UTF-8 and weird characters on SQL data if I use ISO-8859-1 [duplicate] 【发布时间】:2013-07-26 07:26:23 【问题描述】:我正在制作一个带有 á, ã, ç
等拉丁口音的页面。该站点从 SQL 数据库中提取数据。我在<head>
上使用它:<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
使用此标头,HTML 重音字符很好,但 SQL 数据显示为 çã
而不是 ão
,如果我将 charset
从 ISO-8859-1 更改为 UTF-8,所有 HTML 重音字符由 �(问号)显示,SQL 数据可以很好地显示重音符号。
除了转义所有 HTML 字符或 SQL 字符之外,还有什么方法可以解决它?
PS:我已经尝试过mysql_set_charset('utf8');
和SET NAMES utf8
,对我都没有用。
【问题讨论】:
数据库排序规则是什么? 很抱歉回答迟了,但排序规则是 UTF-8。 【参考方案1】:当您看到 �
问号时,您的文档没有以正确的编码(在您的情况下应该是 UTF-8)存储,或者没有使用正确的标题和/或元标记。
如果您想使用 è
等特殊字符,您的 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”。
【讨论】:
我的问题是 HTML 文档。因为我使用的是 Komodo Edit,所以它没有保存为 UTF-8。将其保存在记事本上,现在可以使用了!谢谢您的帮助。我将查看 Komodo 编辑设置以避免将来出现此问题。 @Gus 很高兴您能够修复它。好吧,那么我剩下要做的就是祝你周末愉快。 ;) 感谢您的帮助,希望您也度过一个愉快的周末!以上是关于如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1 [重复]的主要内容,如果未能解决你的问题,请参考以下文章