Encoding 编码

ASCII

英文字符编码,只用了低七位。表示0~127。
单字节(8bit)存储,最高位是奇偶校验位。

UTF-7

UTF-7
每个字节只用7位(最高位总是0)。
A Mail-Safe Transformation Format of Unicode(RFC1642)。这是一种使用7位ASCII码对Unicode码进行转换的编码。将Unicode字元以ASCII编码的字元串来呈现。
设计目的是为了在只能传递7位编码的邮件网关中传递信息。
UTF-7对英语字母、数字和常见符号直接显示,而对其他符号用修正的Base64编码。
符号+和-号控制编码过程的开始和暂停。所以乱码中如果夹有英文单词,并且相伴有+号和-号,这就有可能是UTF-7编码。
UTF-7并不特别安全或可靠,已较少使用,通常采用UTF-8。

Unicode

可以用来表示所有语言的字符,而且是定长双字节(也有四字节的)编码,包括英文字母在内。
只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
覆盖范围广,存储上造成一定的浪费。为节约存储,有多种存储方式。

比如“严”的Unicode码为:4E25(2个字节表示)。

UTF-8

在互联网上使用最广的一种Unicode的实现方式。
在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者传输的时候,就转换为UTF-8编码。
其他实现方式还包括UTF-16和UTF-32,用的较少。
UTF-8是一种变长的编码方式,编码后的大小是不一定的。

编码 表示 备注
一个字节 0******* 7位表示,0是标识符, 编码与ASCII相同,表示0~127的英文字母 0000 0000-0000 007F
两个字节 110***** 10****** 首字节的110,第二个字节的10都是标识符,其余位组成Unicode码(8~11位), 0000 0080-0000 07FF
三个字节 1110***** 10****** 10****** 12~17位,通常表汉字 0000 0800-0000 FFFF
四个字节 11110**** 10****** 10****** 10****** 18~22位 其他生僻字符 0001 0000-0010 FFFF
五个字节 111110*** 10****** 10****** 10****** 10****** 23~27位 0011 0000-0011 FFFF
六个字节 1111110** 10****** 10****** 10****** 10****** 10****** 28~32位

“严”的二进制:4E25=100111000100101,15位就能表示,在UTF-8编码中需要三个字节,依次从后往前填充,结果为:1110**100 10111000 10100101(多出的位补0),转换成十六进制即为:E4B8A5

Little endian和Big endian

Big endian,大端序。编码顺序,高位在前,低位在后。
Little endian,小端序。编码顺序,低位在前,高位在后。

“严”的表示,大端序:4E 25;小端序:25 4E;
txt文件的编码格式,存储在开头的几个字节中。(FF、FE)Unicode、(FE、FF)Unicode bigendian、(EF、BB、BF)UTF-8等。

HttpUtility

System.Web.HttpUtility

posted @ 2022-09-17 14:40  wesson2019  阅读(497)  评论(0编辑  收藏  举报