使用 utf8 字符集在 html 中显示变音符号

showing umlauts in html with utf8 charset

这个问题很可能以前已经回答过很多次,但我已经搜索了几个小时,但我仍然不明白一件基本的事情(很可能是 utf8-charset 本身......)。

我有一个 html,带有德语变音符号“ä”和“ö”(äö):

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
hällö
</body>
</html>

这导致 "h�ll�" 的输出。

当我省略 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 时,结果在我的浏览器中变为 "hällö"(可能有一些德语字符集设置??) - 应该是.

为什么变音符号不像 utf8 字符集中的 "normal" (ASCII) 字符那样工作 我该怎么做才能使它们如此(除了编码、解码和屏蔽)?

which results into the output of "h�ll�".

这些框实际上是 Unicode 代码点 U+FFFD REPLACEMENT CHARACTER,这意味着您的 HTML 文件实际上并未以 UTF-8 编码,因为 äö 无效UTF-8 字节八位字节序列,因此正在被替换。

您需要:

  • 确保文件实际上是以 UTF-8 格式保存的。

  • 将您声明的 charset 更改为它的实际内容(很可能是 ISO-8859-1)(并确保它也匹配 HTTP [的 charset 属性=16=] header,如果存在的话)。

  • 使用 HTML 命名实体而不是实际字符:

    h&auml;ll&ouml;
    

如果您指定 "charset=utf-8",则必须 upload/use 一个使用 UTF-8 编码的 "File"。

要在 Windows 上执行此操作:

  1. 在记事本中打开 html/php.. 文件。
  2. 转到 "File" 并选择 "Save As"
  3. 将 "Encoding" 字段设置为 "UTF-8"

-> 利润