如果我使用 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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP/HTML 中的所有特殊字符都是问号

file_get_contents 显示 utf-8 字符,如问号

Mysql 显示 UTF-8 字符的问号? [复制]

如何在 Android 中将字符串转换为 UTF-8?

(问号) 而不是旧页面上的ÅÄÖ

Freemarker 编码 - 用问号代替重音字符