前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全栈之前端 | 11.HTML常用编码集及其Entity实体符号编码介绍篇

全栈之前端 | 11.HTML常用编码集及其Entity实体符号编码介绍篇

作者头像
全栈工程师修炼指南
发布2023-10-31 17:33:43
5560
发布2023-10-31 17:33:43
举报

0x00 HTML 字符集介绍

描述: 为了正确显示 HTML 页面,Web 浏览器必须知道要使用哪个字符集, 此处作为开发者必回接触到的常见字符集编码有如下:ASCIIANSIISO-8859-1以及UnicodeUTF-8/16)等。

基础知识: 计算机,不能直接存储文字,存储的是编码。 计算机只能处理二进制的数据,其它数据,比如:0-9、a-z、A-Z,这些字符,我们可以定义一套规则来 表示。

假如:A用110表示,B用111表示等。

ASCII

什么是ASCII?

全称: 美国标准信息交换码 (Aerican Standard Code for Information Interchange), 是一种最早的字符编码标准并等于国际标准ISO/IEC646,用于表示英语和西欧语言中常见的字符。 ASCII 定义了 128 种可以在互联网上使用的字符:数字(0-9)、英文字母(A-Z)和一些特殊字符,比如:! $ + - ( ) @ < >

ASCII 字符集范围:

  • ASCII 使用 0 到 31(以及 127)之间的值作为控制字符。
  • ASCII 使用 32 到 126 的值表示字母、数字和符号。
  • ASCII 不使用 128 到 255 之间的值。

ANSI (ASCII 正式标准)

什么是ANSI?

全称:美国国家标准学会(American National Standards Institute)(是一个标准化组织,负责制定和推广各种标准), ASCII编码是ANSI制定的标准之一,ANSI在1986年将ASCII编码正式标准化,将其发展为ANSI字符集编码。 ANSI字符集编码使用8位二进制数(0-255)来表示256个字符,包括ASCII编码中的字符以及一些扩展字符。

每个国家为了显示本国的语言,都对ASCII码进行了扩展,通常使用2个字节(16位二进制)来表示一个汉字,共可以表示2^16=65536个汉字,例如

  • 中国的ANSI编码是GB2312编码(简体),对6763汉字进行编码,含600多特殊字符,另外还有GBK(简体)。
  • 中国台湾的ANSI编码是BIG5编码(繁体)。
  • 日本的ANSI编码是JIS编码

ANSI 字符集范围 ANSI(Windows-1252)是原始的 Windows 字符集, 对于0 到 127的值,ANSI 与 ASCII 相同, ANSI 有一组专有的字符,其值从 128 到 159, 对于 160 到 255的值,ANSI 与 UTF-8 相同, 而 ANSI 与 ISO-8859-1 不同之处在于 ANSI 具有 32 个额外的字符。

总的来说,ASCII编码是ANSI字符集编码的一个子集, ANSI字符集编码扩展了ASCII编码,使其能够表示更多的字符,包括一些特殊符号和扩展字符。然而,ANSI字符集编码有一个局限性,它只能表示英语和西欧语言中的字符,无法满足其他语言的需求。随着全球化的发展,Unicode编码逐渐取代了ANSI字符集编码,成为了更为通用和全面的字符编码标准。

ISO-8859-1

什么是ISO-8859-1?

ISO-8859-1(也称为Latin-1)是一种字符编码标准,由国际标准化组织(ISO)制定。它是ANSI字符集编码的一部分,最初被设计用于表示拉丁字母字符,包括英语、法语、德语、西班牙语等西欧语言的字符。 ISO-8859-1字符集可以表示256个字符,其中包括基本拉丁字母、标点符号、数字以及一些特殊符号。

ISO-8859-1 字符集范围

  • 对于 0 到 127 的值,ISO-8859-1 与 ASCII 相同。
  • ISO-8859-1 不使用 128 到 159 之间的值。
  • 对于从 160 到 255 的值,ISO-8859-1 与 UTF-8 相

Unicode

什么是Unicode?

别称:万国码/国际码/统一码/单一码, 它是一种字符编码标准,用于表示全球范围内的所有文字和符号。它采用了一个统一的编码方案,为每个字符分配了一个唯一的数字代码,以便计算机系统可以正确地表示和处理不同语言的文本。 Unicode编码可以支持超过130,000个字符,包括了各种语言的字母、数字、标点符号、符号图形等。这使得不同语言之间的文本可以在计算机系统中无缝地交流和显示。 除此之外,其针对Unicode的可变长度的字符编码来表示各国的语言文字,例如UTF-8、UTF-16

温馨提示: 在 HTML5 中规范鼓励 Web 开发人员使用 UTF-8 字符集,该字符集涵盖了世界上几乎所有的字符和符号!

UTF-8 字符集字符集范围

  • 对于 0 到 127 的值,UTF-8 与 ASCII 相同。
  • UTF-8 不使用 128 到 159 之间的值。
  • 对于 160 到 255 之间的值,UTF-8 与 ANSI 和 8859-1 相同。
  • UTF-8 从值 256 开始包含超过 10000 个不同字符, 所以通常会用于可变长度的字符编码,例如最常见的UTF-8

ASCII/ANSI/ISO-8859-1/Unicode字符集之间的区别:

Numb

ASCII

ANSI

8859

UTF-8

Description

32

space

33

!

!

!

!

exclamation mark

34

"

"

"

"

quotation mark

35

#

#

#

#

number sign

36

$

$

$

$

dollar sign

37

%

%

%

%

percent sign

38

&

&

&

&

ampersand

39

'

'

'

'

apostrophe

40

(

(

(

(

left parenthesis

41

)

)

)

)

right parenthesis

42

*

*

*

*

asterisk

43

+

+

+

+

plus sign

44

,

,

,

,

comma

45

-

-

-

-

hyphen-minus

46

.

.

.

.

full stop

47

/

/

/

/

solidus

48

0

0

0

0

digit zero

49

1

1

1

1

digit one

参考地址: [https://www.w3school.com.cn/html/html_charset.asp]


0x01 HTML URL 字符编码

描述: URL 编码会将字符转换为可通过因特网传输的格式。

什么是URL?

全称: URL - 统一资源定位器, Web 浏览器通过 URL 从 web 服务器请求页面。 URL 是网页的地址,比如 http://blog.weiyigeek.top

什么是 URL 编码?

URL 只能使用 ASCII 字符集来通过因特网进行发送,但是由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。 URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符,特别的URL是不能包含空格,所以通使用+来替换空格(32),并且在浏览器的URL中会转换为%20

温馨提示: 使用JS针对URL的三种编码方法的区别:

  • encodeURI方法不会对下列字符编码ASCII字母、数字、~!@#$&*()=:/,;?+'
  • encodeURIComponent方法不会对 ASCII字母、数字、~!*()' 编码, 它会将http://X中的//也编码,一般我们使用encodeURIComponent要比encodeURI()更多,因为研发经常要对查询参数而不是对基础URL进行编码
  • escape采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)

温馨提示: 浏览器将根据页面中使用的字符集对输入进行编码。

参考地址:https://www.w3school.com.cn/tags/html_ref_urlencode.asp


0x02 HTML Entity 实体编码

描述: 在 HTML 中的预留字符必须被替换为字符实体,并且键盘上不存在的字符也可以由实体代替。 例如,在 HTML 中不能使用小于号(<)和大于号(>),这是因为浏览器会误认为它们是标签,如果希望正确地显示预留字符则必须在 HTML 源代码中使用字符实体(character entities)

HTML 中字符实体类似这样&entity_name;(实体名)或者&#entity_number;(实体数字)等两种格式,使用实体名而不是数字的好处是名称易于记忆,不过坏处是浏览器也许并不支持所有实体名称(对实体数字的支持却很好)。

实体格式: 必须以 &#开头并以 ;(分号)结束实体编号。 实体方案: 实体名称,十进制实体编号和十六进制实体编号。 例如,如需显示小于号,我们可以这样写 &lt;&#60;&#x3C;\u003c

除此,之外普通键盘上不存在众多数学、技术和货币符号也可使用 HTML 实体名称表示,若不存在实体名称,则可使用实体编号,十进制或十六进制的引用。

代码语言:javascript
复制
<p>我将显示 €</p>
<p>我将显示 &#8364;</p>
<p>我将显示 &#x20AC;</p>

<!-- 
显示结果:
我将显示 €
我将显示 €
我将显示 €
 -->

不间断空格(non-breaking space) 描述:HTML 中的常用字符实体是不间断空格&nbsp;,由于浏览器在渲染时总是会截短 HTML 页面中的空格。 如果您在文本中写 10 个空格,在显示该页面之前,浏览器会删除它们中的 9 个。 例如,在页面中增加空格的数量,您需要使用 &nbsp;字符实体*10,极客。

简单示例:

  • 0.HTML 中常用实体编码
代码语言:javascript
复制
空格  &nbsp;            &#160;    &#x20;
<    &lt;              &#60;      &#x3c;
>    &gt;              &#62;      &#x3e;
&    &amp;             &#38;      &#x26;
"    &quot;            &#34;      &#x22;
'    &apos; (IE不支持)  &#39;      &#x27;
  • 1.在网页中使用实体符号来字符 A、B、C 由数字 65、66 以及 67 来显示。
代码语言:javascript
复制
<p>我将显示 A B C</p>
<p>我将显示 &#65; &#66; &#67;</p>
  • 2.表情符号(Emoji)是来自 UTF-8 字符集的字符:😀 😄 😍 💗
代码语言:javascript
复制
<h1> 使用HTML实体表示 Emoji </h1>
<p style="font-size:48px">
&#128512; &#128516; &#128525; &#128151;
</p>

HTML 中常用的字符实体:

显示结果

描述

实体名称

实体编号

空格

<

小于号

<

<

>

大于号

>

>

&

和号

&

&

"

引号

"

"

'

撇号

' (IE不支持)

'

分(cent)

¢

¢

£

镑(pound)

£

£

¥

元(yen)

¥

¥

欧元(euro)

§

小节

§

§

©

版权(copyright)

©

©

®

注册商标

®

®

商标

×

乘号

×

×

÷

除号

÷

÷

参考地址: [https://symbl.cc/cn/html-entities/]

本文至此完毕,更多技术文章,尽情等待下篇好文!

原文地址: https://blog.weiyigeek.top/2023/7-18-771.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈工程师修炼指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ANSI (ASCII 正式标准)
  • ISO-8859-1
  • Unicode
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档