UTF-8和HTML实体有什么区别?
答案 0 :(得分:4)
UTF-8是字节级编码的编码方案。
HTML entities提供了一种在标准(通常是ASCII)字符空间中表达许多字符的方法。当UTF-8不可用时,它还使更易于阅读。
今天HTML实体的主要目的是确保看起来像HTML的文本呈现为文本。例如,当按特定顺序(即&lt; text&gt;)放置时,小于或大于运算符(<
或>
)可能会在意图呈现为HTML时意外呈现为HTML文本。
答案 1 :(得分:3)
更多地看UTF-8作为无损和自同步的方法将自然数列表映射到字节流,这样你就可以得到自然数(无损),如果你只是落在'中间'流这不是一个大问题。 (自同步)
每个天然棕色恰好代表一个“角色”。
HTML实体是一种用以下方式表示相同自然数的方法:
,代表自然数127,在DEL
字符的unicode中。
在UTF-8中,这是字节流:0111 1111
一旦你超过127,它就变成了一个以上的八位字节,因此,128变为:1000 0001 1111 1111
。
连续两个DEL字符变为0111 1111 0111 1111
。 UTF-8的设计方式是,始终可以从字节流中检索“unicode标量值”的原始列表,即使例如4个八位字节的字节流可以映射回1到4个不同的这种标量值。因此,UTF-8可以称之为“可变长度”。
答案 2 :(得分:3)
你在屏幕上看到的“A”实际上并没有在计算机中存储为“A”,而是一个1和0的序列。 字符集或编码指定了以这种方式对字符进行编码的方法。 ASCII character set仅包含可编码的少数几个字符,几乎仅限于英语字符。但由于历史原因和当时的技术限制,它曾经是互联网的字符集(很早就开始)。
UTF-8和HTML实体都可用于编码不属于ASCII的字符。 HTML实体通过为特殊字符序列赋予特殊含义来实现此目的。使用它,您可以仅使用ASCII字符对ASCII未涵盖的字符进行编码。 UTF-8(Unicode)通过简单地扩展字符集以包含更多字符来实现相同的功能。 HTML实体仅在您需要解码它们的环境中“有效”,通常是浏览器。 UTF-8字符在任何支持字符集的应用程序中都是通用的。
仅包含ASCII字符的文字:
Price: $20
(UTF-8)
Price: $20
(带有HTML实体的ASCII)
包含ASCII未涵盖的欧洲字符的文字:
Beträge: 20€
(UTF-8)
Beträge: 20€
(带有HTML实体的ASCII)
包含亚洲字符的文字,大多数情况下不包括在ASCII中:
値段:二千円
(UTF-8)
値段:二千円
(带有HTML实体的ASCII)
UTF-8的问题是客户端需要理解UTF-8。在过去的十年左右,这一点并不重要,因为所有现代计算机和浏览器都没有理解UTF-8的问题。 UTF-8(Unicode)几乎可以编码当今在这个星球上使用的所有字符(除了少数例外)。使用它,您可以“按原样”处理文本。它绝对应该是保存文本的首选编码。
HTML实体的问题在于普通字符具有特殊含义。在撰写ä
时,它具有“ä”的特殊含义。如果您确实打算写“&amp; auml;”,则需要将序列双重编码为&auml;
。
众所周知,HTML实体也是不可读的。您不想使用它们来编码普通文本中的“特殊”字符。在这种情况下,他们是一个用不完整的角色集合的kludge。改为使用Unicode。
独立于所使用的字符集的HTML实体的重要用途是将HTML标记与文本分开。 HTML也为特殊字符序列赋予特殊含义。 <b>text</b>
是一个正常的字符序列,但它对HTML解析器有特殊含义。如果您打算只编写“&lt; b&gt; text&lt; / b&gt;”,则需要将其编码为<b>text</b>
,因此HTML解析器不会将其误认为HTML标记。
答案 3 :(得分:2)
一吨。 HTML实体主要用于转义HTML标记,因此可以用HTML显示(不混合显示与输出)。例如,>
输出&gt;,而&gt;关闭标签。虽然您可以使用HTML实体生成完整的Unicode,但效率非常低且非常难看。
UTF-8是Unicode的多字节编码,它涵盖了如何在经典的US ASCII代码页之外显示字符,而无需转换代码页并尝试混合代码页。单个代码点(将其视为字符,虽然这不是真正正确的)可以由6个字节的数据组成。它用于表示基本多语言平面(BMP)内外的任何字符,例如重音字符,东亚字符,以及凯尔特树书写(Ogham)以及其他字符集。
答案 4 :(得分:0)
UTF-8是一种编码,htmlentities
是一个使用户输入可以安全显示在页面上的功能,因此HTML标记不会直接添加到标记中。请参阅manual。