崇高文本和视觉工作室中的 UTF-8 编码
Posted
技术标签:
【中文标题】崇高文本和视觉工作室中的 UTF-8 编码【英文标题】:UTF-8 encoding in sublime text and visual studio 【发布时间】:2021-11-17 21:49:39 【问题描述】:这个问题可能有点基本——考虑到我不是大多数人会认为的前端 Web 开发新手。
我正在教一个 8 岁的 html、css 和 javascript。我也借此机会教授 utf-8 编码,特别是 HTML 使用它来允许对非英文字符进行编码和显示的方式。
我想向他展示,如果不包含<meta charset="UTF-8"/>
,重音字符如何无法正确显示。
令人惊讶的是,我能够在测试网页中显示“Á”,而理论上这是不可能的,因为缺少 utf-8 字符集元标记。
经过一些研究,我得出结论,在现代 IDE 中,编码系统是“内置”的,因此没有必要写下<meta charset />
。如果这是错误的,请纠正我,因为我目前对到底发生了什么感到困惑,并且我不想向 8 岁的孩子传授错误的信息。
【问题讨论】:
【参考方案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 中以避免出现问题。
【讨论】:
好的,谢谢你的解释,这确实解决了一些困惑。以上是关于崇高文本和视觉工作室中的 UTF-8 编码的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式在文本编辑器(崇高)中工作,但在 python 中不工作 [重复]