字符编码 ascii unicode utf-8 gb2312

一、
1.   
最早,只有ascii码,美国使用。

1个字节8位,只用了后7位(0-127),表示了英语中一般的字符以及数字、字母;


2.
计算机普及,中国对ascii码进行扩展GB2312,两个字节表示一个汉字(原ascii码的英文继续由1个字节表示);

注意:如果说汉字的ascii码,其实指的是gb2312

3.
越来越多的国家都使用计算机,提出一套支持地球上所有文化、字母、字符的编码Unicode:
2个字节表示一个字符(原ascii码的英文也需要两个字节,高位全为0);

识别unicode的方法就是在ultraedit的16进制编辑模式下查看起编码一般以FF FE开头的

4. 
后来随着网络的普及,在网络上传输数据,出现众多的UTF(UCS Transfer Format)标准,其中utf8每次8个位传输数据。

对于英文其utf8的编码与ascii一样;
对于汉字通常utf8编码为3个字节;



二、
注意:
对于中文来讲,gb2312和unicode都是2个字节表示中文一个汉字,但编码完全不一样,且无规律可循,需要查表。
当然!根据下面的方法可以轻松知道汉字的gb2312和unicode分别为什么

三、
unicode与utf8的转换规则:

Unicode 
UTF-8 

0000 - 007F 
0xxxxxxx 

0080 - 07FF 
110xxxxx 10xxxxxx 

0800 - FFFF 
1110xxxx 10xxxxxx 10xxxxxx 

因此
对于英文来讲,由于其unicode高位全为0属于0000 - 007F段,因此其utf8对应0xxxxxxx ,即还是其ascii码;
中文,utf8则有可能为2个字节或3个字节;



四、
ascii, gb2312, unicode, utf8各个特点:


如果表示英文:

ascii码1个英文字符1个字节;
<使用记事本输入hello,save as 为ansi码格式;再使用ultraedit打开,选择16进制编辑模式,可以看到68,65,6c,6c,6f    很明显1个字符1个字节表示>

unicode码1个英文字符2个字节;
<使用记事本输入hello,save as 为unicode码格式;再使用ultraedit打开,选择16进制编辑模式,可以看到
FF FE 68 00, 65 00, 6c 00, 6c 00, 6f 00

最高2个字节FF FE高位在后,如果为FE FF则表示高位在前
代表后面1个字符2个字节表示,且高字节位全为0,低字节位和ansi码一样>


如果表示中文:

gb2312码1个中文字符2个字节;
<使用记事本输入“汉”,save as 为ansi码格式(其实也就是gb2312);再使用ultraedit打开,选择16进制编辑模式,可以看到BA BA   很明显1个字符2个字节表示>

unicode码1个中文字符2个字节;(但与gb2312完全不同,无规律可循,只能查表)
<使用记事本输入“汉”,save as 为unicode码格式;再使用ultraedit打开,选择16进制编辑模式,可以看到
FF FE 49 6c
最高2个字节FF FE高位在后,如果为FE FF则表示高位在前
代表后面1个字符2个字节表示,可以看到与gb2312的BABA完全不一样>

五、
实际使用过程中,这四种编码有时会混在一起:
实际来讲中文是没有ascii码的,因为1个字节不够表示中文,如果讲中文保存为ascii码格式其实指的是gb2312;
有事也将unicode与utf8相混淆,指代同一个东西,因为两者可以互相转化。

六、
utf8编码格式的获取:

可以根据unicode到utf8的转换规则来计算;(即实现了utf16To8, utf8To16);

可以使用ultraedit的编码转换功能:
首先注意:
使用记事本编辑并选择保存save as为utf8,但到ultraedit中打开,其实都是unicode格式,而不是真正的utf8;
需要转换为utf8可以
选择“文件”-“转换”:常用的从上往下(对于汉字来讲这里的ascii就是gb2312)

ascii转unicode
utf8转unicode

unicode转ascii
utf8转ascii

ascii转utf8                                   (其实是ascii转unicode)
unicode/utf8转utf8                     (其实unicode并没有变)
unicode/ascii/utf8转utf8             (实现真正的unicode或ascii转为utf8)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值