关于unicode和utf8,utf16等

本文详细介绍了Unicode编码标准及其与GB2312等编码的区别,重点讲解了Unicode编码的不同表示形式,特别是UTF-8编码的具体实现方式,并通过实例展示了不同范围Unicode字符在UTF-8中的编码规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常有人谈起……我如何把gb或unicode字符串转化成utf8字符串?这类的问题   
 这里按照自己的理解简要说明一下   
   
 unicode是字符编码的一个标准,这个和GB2312或者BG5等是对应的,但是unicode又有些比较高级的特殊性,unicode的编码是固定的,但是表示这个编码的形式是多种多样的,比如一个字符的unicode编码是0xABCD,可以有各种形式来表示这个0xABCD,而通常所说的"unicode字符串"是指unicode编码的双字节表示法,比如编码0xABCD就会表示成0xABCD,编码0x31就表示成双字节的0x0031,而UTF-8,UTF-16是指其他形式的表示法,比如说UTF8,见下面的对应表:   
 *   U-00000000   –   U-0000007F:     0xxxxxxx       
 *   U-00000080   –   U-000007FF:     110xxxxx   10xxxxxx       
 *   U-00000800   –   U-0000FFFF:     1110xxxx   10xxxxxx   10xxxxxx       
 *   U-00010000   –   U-001FFFFF:     11110xxx   10xxxxxx   10xxxxxx   10xxxxxx      
 *   U-00200000   –   U-03FFFFFF:     111110xx   10xxxxxx   10xxxxxx   10xxxxxx   10xxxxxx       
 *   U-04000000   –   U-7FFFFFFF:     1111110x   10xxxxxx   10xxxxxx   10xxxxxx   10xxxxxx   10xxxxxx       
   
 就是说在0x00-0x7f段之间的unicode字符,表示成他的本身,比如0x31(字符1)用utf-8的形式存储成0x31,占用一个字节。   
 0x80-0x7ff段之间的字符(二进制大于等于8位小于等于11位之内的字符)用两个字节表示,这两个字节的第一个字节的前三位为标志位(110),第二个字节的前两位(10)为标志位,剩下还有11位来表示这个11位以下的UNICODE字符的编码   
 其他依此类推   
 这样的话,使用utf-8编码,可以使UNICODE编码的大多数为英文字符(<0x7f)的字符串占用的空间最少,但是使双字节的unicode字符(比如中文)表示来需要三个字节,比起纯粹的双字节表示的unicode字符串来说,各有利弊吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值