字符编码相关

Ascii     0-127        空格、标点符号、数字、大小写字母

         128-255   扩展字符集

 

GB2312(全角字符):把扩展字符集取消掉,两个大于127的字符连接在一起时就表示一个汉字,

         高字节(0xA1--0xF7,低字节(0xA1--0xFE.可以组合7000多简体汉字

         0-127 继续保持Ascii--半角字符)

 

GBK      高字节大于127,低字节无要求。组合后,包括了GB2312的所有字符,同时又增加了近20000个新的汉字和符号。

 

GB18030:继续扩展,又加了几千个新的少数民族的字。

 

 

以上标准通称做DBCSDouble Byte Charecter Set 双字节字符集)

-------------------------------------------------------------

ISO

UNICODE (Universal Multiple-Octet Coded Character Set),简称UCS,用16位来表示所有的字符,可以

         组合出65535个字符。Ascii的半角字符保持不变,只是由8位变成16位来保存(即高字节都是0)。

         此时,发现strlen函数靠不住了,一个汉字不再是两个字符,而是一个,

         UNICODE开始,无论是半角英文字母,还是全角的汉字,都统一是一个字符,都是统一用两个字节来保存。

         注意:字节与字符->

                            字节:是一个8位的物理存贮单元;

                            字符:是一个文化相关的符号。

 

         WINDOWS NT开始,就都用UNICODE

         若还还不够用,ISO准备了UCS-4方案,即用四个字节来表示一个字符,

         这样可以组合出21亿个不同的字符。

 

UTF (UCS Transfer Format):

 

         UTF8:        每次传输8位数据

         UTF16       每次传输16位数据

        

 

         在网络里传递信息时有一个很重要的问题,就是对于数据高低位的解读方式,一些计算机是采用低位先发送的方法,例如我们PC机采用的 INTEL 架构,而另一些是采用高位先发送的方式,在网络中交换数据时,为了核对双方对于高低位的认识是否是一致的,采用了一种很简便的方法,就是在文本流的开始时向对方发送一个标志符——如果之后的文本是高位在位,那就发送"FEFF",反之,则发送"FFFE"。不信你可以用二进制方式打开一个UTF-X格式的文件,看看开头两个字节是不是这两个字节?

    讲到这里,我们再顺便说说一个很著名的奇怪现象:当你在 windows 的记事本里新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,你会发现这两个字已经消失了,代之的是几个乱码!呵呵,有人说这就是联通之所以拼不过移动的原因。

    其实这是因为GB2312编码与UTF8编码产生了编码冲撞的原因。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值