【问题标题】:UTF-8 encoding in sublime text and visual studio崇高文本和视觉工作室中的 UTF-8 编码
【发布时间】:2021-11-17 21:49:39
【问题描述】:

这个问题可能有点基本——考虑到我不是大多数人会认为的前端 Web 开发新手。

我正在教一个 8 岁的 html、css 和 javascript。我也借此机会教授 utf-8 编码,特别是 HTML 使用它来允许对非英文字符进行编码和显示的方式。

我想向他展示,如果不包含<meta charset="UTF-8"/>,重音字符如何无法正确显示。

令人惊讶的是,我能够在测试网页中显示“Á”,而理论上这是不可能的,因为缺少 utf-8 字符集元标记。

经过一些研究,我得出结论,在现代 IDE 中,编码系统是“内置”的,因此没有必要写下<meta charset />。如果这是错误的,请纠正我,因为我目前对到底发生了什么感到困惑,并且我不想向 8 岁的孩子传授错误的信息。

【问题讨论】:

    标签: html utf-8 frontend


    【解决方案1】:

    出于以下几个原因,您应该指定编码:

    • 即使内置编码系统,您也无法知道为 IDE 选择的默认编码。
    • HTML5 规范规定,如果未指定默认编码应取自传输层,这将是 HTTP1.1 的默认编码字符集:ISO-8859-1。

    在此处查看完整说明:Why it's necessary to specify the character encoding in an HTML5 document if the default character encoding for HTML5 is UTF-8?

    【讨论】:

      【解决方案2】:

      经过一些研究,我得出的结论是,在现代 IDE 中,编码系统是“内置”的,因此没有必要写下来。如有错误请指正

      是的,这是错误的!

      令人惊讶的是,我能够在测试网页中显示“Á”,而理论上这是不可能的,因为缺少 utf-8 字符集元标记。

      这也是错的,我解释一下!

      UTF-8 是一种编码 系统。这意味着它描述了如何将字节映射为文本字符。使用utf-8当然可以显示“Á”

      字母 A(正常,无重音符号)以 ASCII 和 UTF-8 的数字 65 编码。事实上,所有英文字符和标点符号在几乎所有编码中都以相同的方式编码,因此编码问题在纯英文文本中很少出现。

      但是,重音字母、非英语字符和表情符号 (?) 在不同编码系统中的编码方式不同。导致显示“损坏”文本的原因是编码不匹配:您的网络浏览器认为使用的编码是 X,而文件实际上是使用系统 Y 编码的,因此字节值不再映射到正确的字符。例如,系统 X 使用数字 250 来编码?,而系统 Y 使用数字 190,在系统 Y 下,250 映射为“Ë”。所以现在我的?显示为“Ë”。

      <meta charset="utf-8"/> 指定用于 HTML 文件的编码。 绝对需要。您的网页可以正常工作,因为浏览器可能会使用其他方式来获取它,包括有根据的猜测,但它应该始终明确地写在 HTML 中以避免出现问题。

      【讨论】:

      • 好的,谢谢你的解释,这确实解决了一些困惑。
      猜你喜欢
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 2020-06-14
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      相关资源
      最近更新 更多