字符集字符编码学习

字符集字符编码学习 

字符编码这块的知识很重要,从刚入行时的ASCII到现在的Unicode,遇到过很多字符集乱码情况,也都似懂非懂的解决了,但对这些似懂非懂模棱两可的事情总会在心里犯嘀咕,最近终于有时间可以将这块内容好好理一下。 

计算机中的字符编码的基本原理就是映射,将给定的字节序依据指定的字符集进行映射输出字符集映射的结果,根据既定的规则完成字节序到特定字符集的映射。 

 

ASCII 

ASCII字符集的范围,00000000~01111111(0x00~0x7F)0~127 

ASCII字符集被分成4组,每组32个字符组成。 

第一组,00000000~0001 1111(0x00~0x1F),控制字符 

第二组,00100000~0011 1111(0x20~0x3F),符号、标点、数字 

第三组,01000000~0101 1111(0x40~0x5F),符号、大写字母 

第四组,01100000~0111 1111(0x60~0x7F),符号、小写字母 

(图示1) 

计算机生成了可选文字: 偏护、Z符旧码.扒朴斌.护符,a卜U妇护一p一.一SCdefgh。盆t%及I甩夕.勺,k1m110pq、tUvWX甘‘艺:!-妇份吞肠97,8的I的.01盆02.031闪!仍!防.O7.似二伪110111:2I扭31141.,1161171181.9.加121122.23124.乃.洲127^BCDEFG111JKLM、0pQR5TUVWX丫21DEI。64砧66价麟的为717273勺7576”龙种柳81屹8384幻瀚87抓时叨叭9293材朽0;自,,4口J6fl89、U1.g〕11引,X「rXEOTENQACKBI.:!.防T..\皿弓LP丫rFI.'CR以)S!Dl。EDC.DCZDC3DC4、..\KSYN亡井BCA、EMS七B皿污CFS式S‘一)‘卜{VS(!l吸d三)(吸artoth“川”玻)(st:几oftext)《八川oft,.x!)《。衬l时tral贬臼111滋‘川》《.lq山ry)《傲k加w泳如》(t犯川't、鱿:k匆祷K℃、《tlon欢,11tal伪b)(N1.tll褚犷。伙1.1,cw11:犯)(ve八i(,1tah》《NPfornl似川。助w阳甲(ca币a只口ret明l)树1玉f[佣t)(川1in玉1.)((tala111水。蔺Zpe》《由v认℃伪11tro.l》《‘加、”K亡以”.!ro称2》(‘协vK.。加ltrol3》《(l改i份c以ltro扭4)(n叫外t:说a〔kl犯协·叭1界)咤‘y.丫h六,.祖旅玲.《几舀。)(台司成tn、I'.t浦优k)《口附d》心口记offlx气11叨1)《印t从盛lu[。知《。电J伪)(fi卜料.rator)加盯灿p,呀习。tQr)(nx'o"1哟笼.rator》《111111峡IXlm[or)门码3233封35拓373其3t沙4O4.4243材45扔4,4翻49犯5.5253只,5允57,牲扣仗》6.62634,6,89101112竹曰竹1617比19加刀刀刀加乃加刀邓加3L刘

 

(代码1_打印ASII字符集内容_二进制格式) 

 

ISO8859-1 

ISO8859-1ASCII为基础,在空置的0xA0~0xFF增加了96个字符,供附加符号与拉丁字母语言使用。 

字符集范围 

0000 0000~0111 1111(0x00~0x7F):标准ASCII字符集 

0100 0000~0101 1111(0x80~0x9F):在此字符集下未定义 

1010 0000~1111 1111(0xA0~0xFF)ISO8859-1添加的96个字符 

ISO/IEC 2022

主要概念

字符集范围

0000 0000~0001 1111(0x00~0x1F):保留给控制字符

0010 0000~01111111(0x20~0x7F):表示图形字符,除去(0x200x7F分别表示空格与Del)两字符后共94个字符。

所以对于双字节的7位编码空间,图形字符可以有94*94=8836

ISO2022约定字符集分块(针对7位编码)

控制字符分为两块:

  • C00000 0000 ~ 0001 1111 (0x00~0x1F)
  • C1

打印(图形)字符分四块:

0010 0000~01111 1111(0x20~0x7F)用于G0G1G2G3字符块。

  • G0
  • G1
  • G2
  • G3

对于单字节编码的字符集,1个打印(图形)字符块可包含9496个字符;对于双字节编码的字符集,1个打印(图形)字符块可包含94*94个字符。使用控制符的转义序列来表示在G0G1G2G3之间切换。

ISO2022约定字符集分块(针对8位编码)

8位编码字符集兼容7位编码字符集

控制字符分为两块:

  • C0/CL区,0000 0000 ~ 0001 1111 (0x00~0x1F)
  • C1/CR区,1000 0000 ~ 1001 1111 (0x80~0x9F)

打印(图形)字符分四块:

  • G0/GL区,0010 0000 ~ 0111 1111 (0x20~0x7F)
  • G1G2G3/GR区,1010 0000 ~ 1111 1111 (0xA0~0xFF)

 

EUC(Extended Unix Code)

使用8位编码表示字符的标准化方法,主要用于表示及存储文字编码。

EUC基于ISO/IEC 20227位编码标准,单字节编码空间为94,双字节编码空间(区位码)为94*94,约定每个区位加上1010 0000(0xA0)用以兼容ISO 2022编码标准。

EUC定义的4个单独的码集:

  • 码集0,对应7位依ASCII码为基础的字符集标准,包含ISO2022约定的C0G0空间的值,范围:
    • 0x00~0x7F(0000 0000 ~ 0111 1111)
  • 码集123,对应ISO2022约定的G1空间,其中
    • 码集1,表示一些未经修饰的字符
    • 码集20x8E(1000 1110)为第一字节,属于C1控制字符
    • 码集30x8F(1000 1111)为第一字节,属于C1控制字符
  • 码集0总是单字节编码,码集1编码为1~3字节,码集23编码为至少2字节

 

GB2312

标准简体中文字符集,8位双字节编码。共收录6763个汉字,其中一级汉字3755个,二级汉字3008个,同时收录拉丁字母及其它字母682个字符。

GB2312分区

  • 01-09区为符号、数字区
  • 16-55区为一级汉字(按拼音排序)
  • 56-87区为二级汉字(按部首/笔画排序)
  • 10~15区、88~94区未使用

GB2312字节结构

GB2312是单、双字节混合结构

  • 字节值在0x00~0x7F为单子节表示一个字符,构成C0G0区,与ASCII兼容。

汉字及符号以两个字节表示

  • 第一个字节(高字节),0xA1~0xF7(01~87区的区号加上0xA0)
  • 第二个字节(低字节),0xA1~0xFE(01~94区的区号加上0xA0)
  • 因为汉字字符从16区开始,所以汉字区高字节的范围是:0xB0~0xF70xB0+16),低字节的范围不变0xA1~0xFE

GB2312字符集范围

  • ASCII兼容(0x00~0x7F
  • 中文汉字符号(0xA1A1~0xF7FE

Java输出GB2312字符集内容(代码)


相关资料 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值