HTML实体编码
前言
网页中包含了大量的文字,我们的浏览器必须知道这些文字的编码方式,才能准确的将文字呈现出来。
字符的数字表示方法
每个字符有一个 Unicode 号码,称为码点(code point)。如果知道码点,就能查到这是什么字符。举例来说,英文字母a
的码点是十进制的97
(十六进制的61
),汉字“中”的码点是十进制的20013
(十六进制的4e2d
)。
由于一些原因,不是所有的Unicode编码的文字都能够显示出来。
1.小于符号<和大于符号>,在html中被解释为标签,如果有在其他场合中需要使用的这些类型的符号,就需要考虑它是否会被解释为标签。
2.由于Unicode编码的字符太多,无法找到一种输入法能够将它们全部进行呈现。
3.网页不允许混合使用多种编码,如果使用 UTF-8 编码的同时,又想插入其他编码的字符,就会很困难。
HTML 为了解决上面这些问题,允许使用 Unicode 码点表示字符,浏览器会自动将码点转成对应的字符。
例如:
字符的码点表示法是&#N;
(十进制,N
代表码点)或者&#xN;
(十六进制,N
代表码点),比如,字符a
可以写成a
(十进制)或者a
(十六进制)。
字符的实体表示方法
数字表示法的弊端显而易见,码点太多,不容易记住,所有就还有实体表示法。
例如:
<
:<
>
:>
"
:"
'
:'
&
:&
©
:©
#
:#
§
:§
¥
:¥
$
:$
£
:£
¢
:¢
%
:%
*
:$ast;
@
:@
^
:^
±
:±
- 空格:
类似于这样的表示方法,我们叫做字符的实体编码。
URL编码
URL叫做“统一资源定位符”,我们简而言之,把它叫做网站,网址。
URL字符的组成部分:
URL的组成部分有:26的英文字母,10个阿拉伯数字,连号(-
),句点(.
),下划线(_
)
URL字符编码的方法
URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%
)。下面是这几个字符及其转义形式。
!
:%21#
:%23$
:%24&
:%26'
:%27(
:%28)
:%29*
:%2A+
:%2B
使用方法:比如,字母a
的十六进制 ASCII 码是61
,转义形式后就是%61
。因此,www.apple.com
又可以写成www.%61pple.com
,浏览器一样识别。
UTF-8编码
ASCll码
在计算机内部,所有信息最终都是一个二进制数值。每个二进制位都有0和1两种状态,因此8个二进制位可以组成256种状态,这被称为一个字节。
ASCll码一共规定了128个字符的编码。比如空格SPACE是32,大写的A字母是65,小写的a字母是97。
UTF-8
互联网的普及,强烈的要求出现了一个统一的编码方式。UTF-8就是在互联网中使用的最多最广的Unicode的实现方式。其他的实现方式还有UTF-16(字符用两个字节或者四个字节进行表示)。
UTF-8最大的一个特点就是它是一种变长的编码方式,它可以使用1-4个字节表示一个符号,根据不同的符号变化字节的长度。
UTF-8的编码规则
1.对于单字节的符号,字节的第一位设置为0,后面的7位为这个Unicode码。因此对于英语字母,utf-8编码和Ascll码是相同的。
2.对于n字节的符号(n>1),第一个字节的前n位都设置位1,第n+1位设置为0,后面字节的前两位一律设置为10。剩下的没有提及的,全部为这个符号的Unicode编码。
0000 0000-0000 007F | 0xxxxxxx (0-127)
0000 0080-0000 07FF | 110xxxxx 10xxxxx (128-2047)
0000 0800-0000 FFFF| 1110xxxx 10xxxxxx 10xxxxxx (2048-65535)
0001 0000-0010 FFFF| 11110xxx 10xxxxxx 10xxxxxxx 10xxxxxx
上述,x为可编码位。
如果一个字节的第一位为0,则这个字节单独就是一个字节;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。