关于mysql:如果我在使用ISO-8859-1时使用UTF-8和SQL数据上的奇怪字符,HTML上的问号字符

Question mark characters on HTML if I use UTF-8 and weird characters on SQL data if I use ISO-8859-1

本问题已经有最佳答案,请猛点这里访问。

我正在制作一个带有拉丁口音的页面,比如á, ?, ?等。此站点从SQL数据库中提取数据。我在上使用它:

使用这个头部,HTML重音字符是可以的,但是SQL数据显示为?§?£而不是?o,如果我将charset从iso-8859-1更改为utf-8,所有HTML重音字符都会显示在?(问号)SQL数据显示重音符号很好。
除了转义所有的HTML字符或SQL字符之外,还有什么方法可以修复它吗?

附言:我已经试过mysql_set_charset('utf8');SET NAMES utf8,都没用。


当您看到?问号时,您的文档没有以正确的编码(在您的情况下应该是utf-8)存储,或者没有提供正确的头和/或元标记。

如果要使用诸如è之类的特殊字符,则HTML文档应保存为utf-8并用作utf-8:

1
<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"。