12、J2SE基础-字符编码

字符编码

  • 计算机里面只有数字,计算机软件里的一切都是用数字来表示的,屏幕上显示的一个个字符也不例外;
  • 字符a对应数字97,字符b对应数字98等,这种字符与数字对应的编码规则别称为ASCII(美国标准信息交换码)。ASCII的最高bit位都为0,也就是说这些数字都在0---127之间;
  • 中国大陆将每一个中文字符都用两个字节的数字来表示,中文字符的每个字节的最高位bit都为1,中国大陆为每个中文字符制定的编码规则称为GB2312(国标码);
  • 在GB2312的基础上,对更多的中文字符(包括繁体)进行了编码,新的编码规则称为GBK;
  • 在中国大陆使用的计算机系统上,GBK和GB2312就被称为该系统的本地字符集;
  • “中国”的“中”字,在中国大陆的编码是十六进制的D6D0,而在中国台湾的编码是十六进制的A4A4,台湾地区对中文字符集的编码规则称为BIG5(大五码);
  • 在一个国家的本地化系统中出现的一个字符,通过电子邮件传送到另外一个国家的本地化系统中,看到的就不是那个原始的字符,而是另外那个国家的字符或乱码;

Unicode编码

  • ISO(国际标准化组织)将全世界所有的符号进行了统一编码,称之为Unicode编码;
  • “中”这个符号,在全世界的任何角落始终对应的都是一个十六进制的数字4e2d;
  • 如果所有的计算机系统都使用Unicode编码,在中国大陆的本地化系统中显示的“中”这个符号,在其他国家的本地化系统中依然是“中”;
  • Unicode编码的字符都占用两个字节的大小,对于ASCII码所表示的字符,只是简单地在ASCII码原来占用的一个字节前面增加一个所有bits为0的字节;
  • Unicode只占用两个字节,在全世界范围内所表示的字符个数不会超过2的16次方(65535),实际上,Unicode编码中还保留了两千多个数值没有用于字符编码;
  • 在相当长的一段时间内,本地化字符编码将于Unicode编码共存;
  • Java中的字符使用的都是Unicode编码,java在通过Unicode保证跨平台特性的前提下,也支持本地平台字符集;

UTF-8编码

  • ASCII码字符保持原样,仍然只占用一个字节,对应其他国家的字符,UTF-8使用两个或三个字节来表示,使用UTF-8编码的文件,通常都要用EF BB BF作为文件开头的三个字节数据;
  • 优点
    • 不出现内容为0X00字节
    • 便于应用程序检测数据在传输过程中是否发生了错误
    • 直接处理使用ASCII码的英文文档
  • 缺点:
    • 某些字符需要使用三个字节

UTF-16编码

  • UTF-16编码在Unicode基础上进行了一下细节上的扩充,增加了对Unicode编码没有包括的那些字符的表示方式;
  • UTF-16对Unicode的扩充并没有影响Unicode编码所包括的那些字符,只是增加了对Unicode编码没有包括的那些字符的表示方式,一个使用Unicode编码的字符就是 UTF-16格式的;

字符编码的操作体验

  • 打印中文字符的Unicode码
  • 打印中文字符的GB2312码
  • 验证写入到屏幕输出流的中文字符所采用的编码
  • 查看系统的缺省编码
  • 修改系统的缺省编码
  • 验证从键盘输入流中取出的中文字符所采用的编码
  • 研究GB2312码到Unicode码的解码过程
  • GB2312码的中文字符被按照ISO8859-1字符集解码生产了Unicode字符串后,如何将这个字符串转化成正确的Unicode编码字符串


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值