【问题标题】:showing umlauts in html with utf8 charset使用 utf8 字符集在 html 中显示变音符号
【发布时间】:2015-08-23 14:42:01
【问题描述】:

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

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

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

这会导致“h�ll�”的输出。

当我忽略 &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt; 结果在我的浏览器中变成“hällö”(可能有一些德语字符集设置??) - 应该是这样。

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

【问题讨论】:

    标签: html utf-8


    【解决方案1】:

    如果您指定“charset=utf-8”,则必须上传/使用以 UTF-8 编码的“文件”。

    在 Windows 上执行此操作:

    1. 在记事本中打开您的 html/php.. 文件。
    2. 转到“文件”并选择“另存为”
    3. 将“编码”字段设置为“UTF-8”

    -> 利润

    【讨论】:

      【解决方案2】:

      这会导致“h�ll�”的输出。

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

      您需要:

      • 确保文件实际上以 UTF-8 开头。

      • 将您声明的 charset 更改为它的真实内容(很可能是 ISO-8859-1)(并确保它也匹配 HTTP Content-Type 标头的 charset 属性,如果存在)。

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

        h&auml;ll&ouml;
        

      【讨论】:

      • 我认为第一个项目符号是我做错了。其他子弹也是对的,但我现在的问题实际上是由于我希望特别不要做这两个......非常感谢你:-)
      • 我认为第一个项目符号是我做错的事情 - 通常是这样。
      • 实际上我不得不下载一个新的编辑器,因为我的(字面意思)旧的似乎甚至无法保存为 utf8 - 也许这至少是一个非常谦虚的解释为什么我从来没有偶然发现这个......所以只要您不尝试新事物,传统似乎是一件好事。
      猜你喜欢
      • 1970-01-01
      • 2013-12-25
      • 2020-08-15
      • 2017-07-06
      • 2015-01-22
      • 2020-01-03
      • 2011-06-22
      • 1970-01-01
      • 2017-06-04
      相关资源
      最近更新 更多