18

在我的页面上,顶部中间的文本(« Ce site Internet. »)包含带有重音符号的 E,在我的计算机上显示为问号。

尽管我的 head 标记中有 meta charset="UTF-8" 并且包含文本的 PHP 文件在使用 Notepad++ 打开时显示为 UTF-8,但这是事实。

那是怎么回事?

4

4 回答 4

21

当浏览器无法理解它正在读取的数字时,它会显示这些。UTF-8 是自同步的。与其他多字节字符编码不同,您始终知道使用 UTF-8 的位置。如果您看到数字 192-247,您就知道您处于多字节序列的开头。如果你看到 128-191,你就知道你在其中之一。没有遗漏第一个数字和混淆文本其余部分的危险。这意味着在 UTF-8 中,191 后跟 224 的序列永远不会自然出现,因此浏览器不知道如何处理它,而是显示 ��。

在您的 head 标签中使用以下内容:

<meta charset="UTF-8">
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">

见:http ://coding.smashingmagazine.com/2012/06/06/all-about-unicode-utf8-character-sets/

于 2012-10-18T11:23:38.503 回答
4

该页面实际上并未以 UTF-8 编码,而是以 Latin1 编码。您需要将源代码文件实际保存为 UTF-8 或以其他方式确保它们以 UTF-8 编码输出。目前,您在网站声称编码的内容与实际编码的内容之间存在分歧。

于 2012-10-18T11:33:21.530 回答
2

尽管您在元数据和 HTTP 标头中宣布内容为 UTF-8,但发送的不是 UTF-8。您可能需要检查您的 PHP 设置,以确保它实际上以正确的编码输出内容。http://php.net/manual/en/mbstring.configuration.php

于 2012-10-18T11:55:45.477 回答
1

您是否对重音字符使用了 ASCII/HTML 代码?如果没有,这里是它们的列表。搜索“E 急性”,你应该对那个字符的代码进行优化(&Eacute;我认为是这样)。起初我认为这是您使用的字体系列,但我不认为这是因为我在浏览器中禁用了所有样式,它们仍然显示为问号。

更多 HTML 字符实体可以在 https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references找到

于 2012-10-18T11:22:50.247 回答