常用字符编码

原创 2007年09月27日 18:37:00

常用字符编码      Write by Jack.Hao

我们看到的一切数据在计算机中都是以二进制的形势存在的,为什么却可以看到不同的字符呢?这就是字符编码的作用了。在早期计算机主要应用中所用到的字符很少,仅为26个英文字母和一些特殊的符号,要对这些字符进行相应的编码,我们只需要一个字节(8位二制数据,可能表示256个字符)而这以足够应符当时的需求。然而我们表示的时候只用到了后7位,首位为零,这样可以表示128个字符,这就是我们常听的ASCII码了。

各种字符编码的集合就字符集!

 

<!--=========================== Write by Jack.Hao=========================-->

 

下面介绍几种常见的字符编码:

 

1.ASCII码:

  ASCII(American Standard Code for Information Interchange,美国国家信息交换编码)码,主要应用于英文字符的编码。每一个ASCII码占8位(一个字节),最高位为0,这些字符在0~127之间,最多可表示128个字符。另位128个作为扩展,最高位为1时,表示的一些特殊的符号(图形符)。

 

  但随着计算机的发展,被各地所使用,而ASCII码缺少对各地字符编码的支持,这已不能满足人们的需求,为些各地ASCII码进行扩展或重新编码,从而产生了各种不同字符集,但它们都对ASCII中的字符提供了支持。

 

2.ISO8859-1

  ISO8859-1(又称Latin-1)编码,它是在ASCII码的基础扩展而形成的,又加上了对西欧字符的支持。其中0~127所表示的字符与ASCII码相同,只是又包含了128~255包含了西欧所用的一些字符。

 

3.GB2312GBK

这个编码大家应该不陌生吧~~

GB2312是中国人民共和国国家标准汉字交换编码,由我国国家标准总局制定发布,适用于中国大陆和新加坡地区。为了和ASCII码区分,GB2312用两个字节表示,每个字节的最高位都为1

GB2312中一共包括了6762个汉字,算上其它一些控制键和其它字符,一共7573个。GB2312将代码表分为94个区,对应第一字节。每个区94个位,对应第二字节。01-09区为符号、数字区,16-87区为汉字区,10-15区、88-94为等待扩展空白区。
     GB2312
将收录的汉字分成两级:第一级是常用汉字计3755个,位于16-55区,按汉语拼音字母/笔形顺序排列;第二级汉字是次常用汉字计3008个,位于56-87区,按部首/笔画顺序排列。
GB2312
的编码范围为2121H-777EH,与ASCII有重叠,通行方法是将GB码两个字节的最高位置1以示区别。
    
为了对更多的字符提供支持,在199512月,我国又颁布了GBK(国标2312的扩展版)。,在这套字符编码中,除了全部兼容GB2312中的所有字符以外,还对繁体中文和许多特殊符号进行了编码。它是现在windows中文系统默认的字符集。其中共包含了20902个汉字,其编码范围0x8140-oxfefe

在中国大陆使用的计算机系统上,默认将GBKGB2312作为该系统的本地字符集。

 

 

<!--======================== Write by Jack.Hao=======================-->

 

每个地区都定义了自己的一套编码,平时还不会出什么问题,但一旦涉及到国际化,就会出现乱码问题。

例:你用GB2312写的文件拿到美国的电脑上还想看一下,就会看到乱码,因为美国人使用的编码中并没有包含你所写的这些字符。

为了解决国际化的问题,就特别需要一种全球统一的字符编码。

 

 

4.Unicode

  Unicode(统一字符编码集),由ISO(国际标准化组织)将全世界的编码进行了统一编码。它使用两个字节表示。0~65535,共可表示65536个字符。其中包括了中文,西欧字符,日语,韩语,阿拉伯语,希腊语等等,包括了世界上决大多数和的字符。其中定义了40000多个字符,其它25000多个字符作为以后的扩展。定义的字符中包括20000多个汉字,11000多个韩语字符,还有其它字符。

Unicode0~255的字符与ISO8859-1一致。

 

这样就可以很好解决国际化中的乱码问题,只要用Unicode编写的文档然后拿到以地方再用Unicode码都可以正常的显示,而不再是乱码。

 

这样好是好,但也有一个问题,大家想想,用两个字符去表示一个英文字符,是不是有点浪费存储空间啊,因为一个足矣~~~

 

5.UTF-8

  既然Unicode这些浪费,大家就又在寻求一种新的字符编码来替代Unicode,这时UTF-8出场了!!

  UFT-8Eight-bit UCS Transformation Fomrat,它是UCSUniversal Character Set,通用字符集)的一个字集。

  它分三种情况:

    ASCII码保持原样,只占用一个字节。如果字符在0x0080~0x007f之间,它使用两个字节来表示,如果字符在0x0800~0xffff之间它采用三个字节来进行表示。例:如果为中文字符它会采用三个字符来表示。

 

既然它们同为国际化的编码,之间就可以进行转换,转换规则如下:

(1)如果Unicode的前9位是0,UTF-8用一个字节表示。UTF-8Unicode码最后7位二进制数据,最高位补零。

例:Unicode/u0035=00000000 00110101

   UTF-8:00110101=0x35H

(2)如果Unicode5位为零,则UTF-8采用两个字节表示。UTF-8的第一个字节前的前三位为固定的110开头,第一个字节的后5位为Unicode编码去掉前5位后的最高5位。第二个字节前二位固定以10开头,第二个字节的后六位取Unicode码的最低6位。

(3)如果前两个都不行,那就只能转换为三个字节了。第一个字节以1110开头,第一个字节的后四位取Unicode码的最高四位。第二个字节以10开头,第二个这节的后六位为Unicode码的5-10位。第三个字节也以10开头,第三个字节的后六位取Unicode的最后六位。

 

注意(1),(2),(3)顺序的含义,能转换为一个字节它当然不会转换为二个字节。

 

<!--====================== Write by Jack.Hao===========================-->

 

本文只是初略的介绍了几个常用的几种字符编码,常见的还有UTF-16,它是在Unicode编码的基础之上扩展形成的一种新的字符编码。UTF-16编码扩充并没有影响Unicode编码,一个用Unicode编码的字符就是UTF-16格式。如果大家想详解了解各种编码的底层,可以在网上搜索一下,很多的吗~~~

 

注意:国际化的编码,如UTF-8UnicodeUTF-16,虽然在国际化时方便很好,但它也不会完全替代 本地编码。如Unicode表示一个英文字符也要2个字节,这样美国人会乐意的。UTF-8表示一个汉字却要三个字节,同样我们也不乐意。

所以说在相当长的一段时间内国际化编码和本地编码将长期共存!

 

参考书籍:Java Web开发详解 孙鑫

转载请说明出处。。。。。。

 

相关文章推荐

常用字符编码详解.doc

  • 2009年11月01日 22:29
  • 30KB
  • 下载

关于常用字符编码的测试

在编程之中经常会遇到编码的问题,尤其是在web开发中经常会遇到乱码,这是一个很让人头疼的问题,以前对于编码的知识仅限于知道有哪几种常用的编码,比如ASCII,Unicode,GBK等,遇到乱码的时候把...

Java精选笔记_IO流(转换流、常用流、流操作规律、字符编码)

IO流 用来处理设备之间的数据传输,java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中 按操作数据分为:字节流和字符流;按流向分为:输入流和输出流。 程序从输入流中读取数据...

程序员常用字符编码 ——从ASCII编码谈起...

1、ASCII-128编码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(b...

java字符编码问题:常用的GBK与Unicode汉字编码在JAVA是怎样规定的?

字符集编码不是Java规定的,Java只是按照标准组织的规定来处理字符。如GBK是中国制定的国家标准信息交换用汉字编码字符集,Unicode是国际组织(http://www.unicode.org)制...

字符编码查看器 1.4.2

  • 2017年11月10日 15:24
  • 37KB
  • 下载

字符编码转换工具

  • 2017年07月12日 09:17
  • 349KB
  • 下载

Java中的ASCII、Unicode和UTF-8字符编码集

有Javaer在留言板提议让我专门发一篇关于ASCII和Unicode的日志,特此搜集整理一篇文章发出来,希望大家能够满意。   首先讲一下几种字符的编码方式: 1. ASCII码 ...

中英文字符编码查询_V1.1.rar

  • 2015年06月13日 18:47
  • 15KB
  • 下载

字符编码文档

  • 2015年05月26日 15:06
  • 379KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:常用字符编码
举报原因:
原因补充:

(最多只允许输入30个字)