UTF-8编码

标准ASCII码使用7位二进制来表示128个字符的编码,这128个符号,只占用了一个字节的后面7位,最前面一位统一规定为0.当然,英语用这128个符号编码就足够了,但是用来表示其他语言,这128个字符是不够的,所以扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号
但是光中国汉字就多达10万左右,一个字节只能表示256个符号肯定是不够,就必须使用多个字节来表达一个符号…世界上存在着多种编码方式,同一个二进制数字可以被编码成不同的符号.因此要想打开一个文本文件,就必须知道他的编码方式.否则用错误的编码方式解读,就会出现乱码…
Unicode将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,它规定了符号的二进制代码,但没有规定这个二进制代码应该如何存储,UTF(Unicode Transformation Format)Unicode字符集转换格式,即怎样将Unicode定义的数字转换到程序数据的编码方案.包括UTF-8,UTF-16,UTF-32

UTF-8的特点是对不同范围的字符使用不同长度的编码。UTF-8编码的最大长度是6个字节;
UTF-16编码以16位无符号整数为单位;
UTF-32编码以32位无符号整数为单位

UTF-8编码实现
  1. 对于单字节的符号,字节的每一位设为0,后面7位为这个符号的Unicode码,因此对于英语字母,UTF8编码和ASCII码是相同的;
  2. 对于n字节的符号(n>1),第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10.余下没有提及的二进制位,全部为这个符号的Unicode码
Unicode编码(十六进制)UTF-8字节流(二进制)
0x00~0x7F (单字节,7 bit)0 x x x x x x x
0x0080~0x07FF (双字节,11 bit)1 1 0 x x x x x, 1 0 x x x x x x
0x0800~0xFFFF (三字节,16 bit)1 1 1 0 x x x x, 1 0 x x x x x x, 1 0 x x x x x x
0x010000~0x10FFFF (四字节,21 bit)1 1 1 1 0 x x x, 1 0 x x x x x x, 1 0 x x x x x x, 1 0 x x x x x x

注:根据理解,4个字节Unitcode编码的范围是0x010000~0x1FFFFF,但文档显示是ox010000~0x10FFFF,0x10FFFF是Unicode的最大值,还是其他原因,待确认???
由上表可以看出:对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同.

中文Unicode码范围 0x4E000x~9FBF

编码实现过程如下:
中文UTF-8编码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值