安全初级:字符编码

字符编码

字符编码:是一种映射规则,根据映射规则将字符映射成其他形式的数据在计算机中存储和传输。

常用的编码

编码制定时间作用
ASCII1967表示英语及西欧语言
GB23121980国家简体中文字符集,兼容ASCII
Unicode1991国际标准化组织统一标准字符集
GBK1995GB2313的拓展字符集,支持繁体字,兼容GB2312
UTF-819912不定长编码

ASCII码

img

GB2312编码

GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。

GB2312编码范围:A1A1-FEFE

汉字的编码范围:B0A1-F7FE

分区表示
GB2312编码对所收录字符进行了“分区”处理,共94个区,每区含有94个位,共8836个码位。这种表示方式也称为区位码。
01-09区收录除汉字外的682个字符。
10-15区为空白区,没有使用。
16-55区收录3755个一级汉字,按拼音排序。
56-87区收录3008个二级汉字,按部首/笔画排序。
88-94区为空白区,没有使用。

举例:GB2312的第一个汉字是”啊“字,位于16区的01位,那么它的区位码就是1601。

双字节编码
GB2312规定对收录的每个字符采用两个字节表示,第一个字节为“高字节”,对应94个区;第二个字节为“低字节”,对应94个位。所以它的区位码范围是:0101-9494。区号和位号分别加上0xA0就是GB2312编码。

UTF-8编码

网页可以使用不同语言的编码,最常用的编码是UTF-8。

Unicode字符集旨在收集世界上所有的字符,目前已经收入了十多万个字符。UTF-8编码也是Unicode字符集的其中一种表示方法。

码点(code point):每个字符的Unicode号码

字符的码点表示方法:

  • 十进制:&#N(N代表码点 ascii编码)
  • 十六进制:&#xN(N代表码点 ascii编码)

**可变长度字符编码:**UTF-8 使用一至四个字节对 Unicode 字符集中的所有有效代码点进行编码。

  • UTF-8 使用 1 个字节表示 ASCII 字符;
  • UTF-8 使用 2 个字节表示带有附加符号的拉丁文、希腊文等;
  • UTF-8 使用 3 个字节表示其他基本多文种平面(BMP)中的字符(包含了大部分常用字,如大部分的汉字);
  • UTF-8 使用 4 个字节表示 Unicode 辅助平面的字符。
字符实体表示法字符实体表示法
<&lt;>&gt;
"&quot;&apos;
&&amp;©&copy;
#&num;§&sect;
¥&yen;$&dollar;
£&pound;¢&cent;
%&percnt;*$ast;
@&commat;^&Hat;
±&plusmn;空格&nbsp;
Unicode符号范围(十六进制)UTF-8编码(二进制)
0000 0000-0000 007F0xxxxxxx
0000 0080-0000 07FF110xxxxx 10xxxxxx
0000 0800-0000 FFFF1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

URL

URL是”统一资源定位符“(Uniform Resource Locator),中文为”网址“,即各种资源的互联网网址。

https://www.example.com:80/path/index.html

网址的组成部分

协议-域名/IP-端口-路径-查询参数-锚点

协议

协议是浏览器请求服务器资源的方法,如https://就是表示使用了HTTPS协议。

HTTPS是HTTP的加密版本,现在的网站中,大部分都是使用HTTPS协议来保障自身网站的安全。

主机

主机(host)也称域名,https://www.example.com:80/path/index.html的域名就是www.example.com,当然,不是所有的主机都有域名,没有域名的主机是使用自己的IP地址。

端口

一个域名有可能有很多个网站,这之间通过端口(port)来进行区分。

端口是跟在域名后面,用冒号分隔开。如www.example.com:80

常见协议及端口号

协议端口号
HTTP80
HTTPS443
FTP20/21
SMTP25
POP3110
IMAP143
DHCP67/68
Telnet23
SSH22
NTP123
SNMP161/162
RDP3389
ICQ7
SIP5060/5061

常见服务及端口

服务端口
mysql3306
sqlserver1433
oracle1521
Windows远程连接3389
redis6379

路径

路径(path)是资源在网站的位置。如https://www.example.com:80/path/index.html/path/index.html就是路径。

查询参数

查询参数(parameter)是提供给服务器的额外信息。参数放在路径的后面,使用?分隔。

查询参数可以是一组或多组,每一组都使用键值对的形式,键名和键值之间用=连接,多组参数之间使用&连接。

URL字符

URL的组成部分只能使用以下字符

  • 26个英语字母(包括大写和小写)
  • 10个阿拉伯数字
  • 连词号(-
  • 句点(.
  • 下划线(_

还有18个字符是URL的保留字符,网址在使用这些字符时,需要进行转义。

字符转义的方法就是在字符的十六进制ASCII码前面加上%

字符转义形式
%21
#%23
$%24
&%26
%27
(%28
)%29
*%2A
+%2B
,%2C
/%2F
:%3A
;%3B
=%3D
?%3F
@%40
[%5B
]%5D

HTTP状态码

常见的状态码:

状态码200:

状态码200表示服务器响应成功,就是服务器找到了客户端请求的内容,并且将内容返回给客户端。

状态码302:

状态码302代表临时跳转。例如:URL地址A可以向URL地址B上跳转,但这并不是永久性的,在经过一段时间后,URL地址A还可能向URL地址C上跳转。

状态码301 :
状态码301和状态码302相似,不同的是状态码301往往代表的是永久性的重定向,值得注意的是,这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。这个“跳”的动作是服务器是通过回传状态码301来下达给客户端的,让客户端完成跳转。

状态码304:
服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。

状态码403:
状态码403代表请求的服务器资源权限不够,也就是说,没有权限去访问服务器的资源,或者请求的IP地址被封掉了。

状态码404:
状态码404代表服务器上没有该资源,或者说服务器找不到客户端请求的资源,是最常见的请求错误码。

状态码500:
状态码500代表程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值