html - 如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1

标签 html mysql utf-8 character-encoding iso-8859-1

<分区>

我正在制作一个带有拉丁口音的页面,例如 á, ã, ç , 和别的。该站点从 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”

关于html - 如果我使用 UTF-8,HTML 上的问号字符和 SQL 数据上的奇怪字符,如果我使用 ISO-8859-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17874348/

相关文章:

html - 添加表格滚动条

php - 关联数组插入Mysql

mysql - 如何获得一个新的 EC2 实例来挂载一个已有 MySQL 数据库的现有卷?

python - 在带有 'safe' 参数的 utf-8 字符串上使用 python 的 urllib.quote_plus

Java文件编码检测和转换器(UTF-8、ASCII)

java - 程序如何决定xml文件的编码?

html - 一行上的两个正文

javascript - 根据从数据库获取的值打开表单

html - 3 列设置 CSS 问题

mysql - 获取续集生成的sql以生成不带反引号的字段名称