GB2312 字符集.docx

上传人:b****5 文档编号:2794711 上传时间:2022-11-15 格式:DOCX 页数:31 大小:39.93KB
下载 相关 举报
GB2312 字符集.docx_第1页
第1页 / 共31页
GB2312 字符集.docx_第2页
第2页 / 共31页
GB2312 字符集.docx_第3页
第3页 / 共31页
GB2312 字符集.docx_第4页
第4页 / 共31页
GB2312 字符集.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

GB2312 字符集.docx

《GB2312 字符集.docx》由会员分享,可在线阅读,更多相关《GB2312 字符集.docx(31页珍藏版)》请在冰豆网上搜索。

GB2312 字符集.docx

GB2312字符集

序言

这本手册用表格列出了GB2312汉字国家标准字符集的全部字符和编码,以及每个字符所对应的Unicode编码。

同时也列出了从Unicode到GB2312转换表。

这些表格的程式制作也收录在这本手册中。

修改记录:

∙第3.05版,二○○四年,局部修改。

∙第3.00版,二○○三年,整理成打印版。

∙第2.00版,一九九九年,整理成网页。

∙第1.00版,一九九七年,初稿完成。

阅读记录:

∙到2006年为止,本书已被阅读72,409次。

∙到2004年为止,本书已被阅读4,721次。

版权声明:

∙版权所有1997-2007杨和荣。

∙允许转载和使用,但必须保留版权声明

 

GB2312字符集和编码说明

GB2312字符集

GB2312是汉字字符集和编码的代号,中文全称为“信息交换用汉字编码字符集”,由中华人民共和国国家标准总局发布,一九八一年五月一日实施。

GB是“国标”二字的汉语拼音缩写。

GB2312字符集(characterset)只收录简化字汉字,以及一般常用字母和符号,主要通行于中国大陆地区和新加坡等地。

GB2312共收录有7445个字符,其中简化汉字6763个,字母和符号682个。

GB2312将所收录的字符分为94个区,编号为01区至94区;每个区收录94个字符,编号为01位至94位。

GB2312的每一个字符都由与其唯一对应的区号和位号所确定。

例如:

汉字“啊”,编号为16区01位。

GB2312字符集的区位分布表:

区号字数字符类别

0194一般符号

0272顺序号码

0394拉丁字母

0483日文假名

0586Katakana

0648希腊字母

0766俄文字母

0863汉语拼音符号

0976图形符号

10-15备用区

16-553755一级汉字,以拼音为序

56-873008二级汉字,以笔划为序

88-94备用区

这本手册列出了GB2312的全部字符和它们的区位号。

GB2312编码

GB2312原始编码(encoding)是对所收录的每个字符都用两个字节(byte)表示。

第一字节为“高字节”,由字符的区号值加上32而形成;第二字节为“低字节”,由字符的位号值加上32而形成。

例如:

汉字“啊”,编号为16区01位。

它的高字节为16+32=48(0x30),低字节为01+32=33(0x21),合并而成的编码为0x3021。

在区位号值上加32的原因大慨是为了避开低值字节区间。

由于GB2312原始编码与ASCII编码的字节有重叠,现在通行的GB2312编码是在原始编码的两个字节上各加128修改而形成。

例如:

汉字“啊”,编号为16区01位。

它的原始编码为0x3021,通行编码为0xB0A1。

如果不另加说明,GB2312常指这种修改过的编码。

这本手册列出了GB2312的全部字符和它们的编码。

GB2312与Unicode的关系

GB2312字符集是Unicode字符集的一个子集。

这也就是说,GB2312所收录的每一个字符都收录在Unicode之中。

但是GB2312编码和Unicode编码确没有什么相同之处。

同一个汉字,它的GB2312编码和Unicode编码确毫不相同。

例如:

汉字“啊”,它的GB2312编码为0xB0A1,但是它的Unicode编码为0x554A。

这本手册为GB2312的每一个字符列出了它所对应的Unicode编码和UTF-8(UnicodeTransformationFormat-8-bit)编码。

从GB2312到Unicode转换表制作程式

这本手册里的字符与汉字编码列表由下面的程式所生成。

/**

*GB2312Unicde.java

*Copyright(c)1997-2003byDr.HerongYang

*/

importjava.io.*;

importjava.nio.*;

importjava.nio.charset.*;

classGB2312Unicde{

staticOutputStreamout=null;

staticcharhexDigit[]={'0','1','2','3','4','5','6','7',

'8','9','A','B','C','D','E','F'};

staticintb_out[]={201,267,279,293,484,587,625,657,734,782,827,

874,901,980,5590};

staticinte_out[]={216,268,280,294,494,594,632,694,748,794,836,

894,903,994,5594};

publicstaticvoidmain(String[]args){

try{

out=newFileOutputStream("gb2312.gb");

writeCode();

out.close();

}catch(IOExceptione){

System.out.println(e.toString());

}

}

publicstaticvoidwriteCode()throwsIOException{

booleanreserved=false;

Stringname=null;

//GB2312isnotsupportedbyJDK.SoIamusingGBK.

CharsetDecodergbdc=Charset.forName("GBK").newDecoder();

CharsetEncoderuxec=Charset.forName("UTF-16BE").newEncoder();

CharsetEncoderu8ec=Charset.forName("UTF-8").newEncoder();

ByteBuffergbbb=null;

ByteBufferuxbb=null;

ByteBufferu8bb=null;

CharBuffercb=null;

intcount=0;

for(inti=1;i<=94;i++){

//Definingrowsettings

if(i>=1&&i<=9){

reserved=false;

name="Graphicsymbols";

}elseif(i>=10&&i<=15){

reserved=true;

name="Reserved";

}elseif(i>=16&&i<=55){

reserved=false;

name="Level1characters";

}elseif(i>=56&&i<=87){

reserved=false;

name="Level2characters";

}elseif(i>=88&&i<=94){

reserved=true;

name="Reserved";

}

//writingrowtitle

writeln();

writeString("

");

writeNumber(i);

writeString("Row:

"+name);

writeln();

writeString("

");

writeln();

if(!

reserved){

writeln();

writeHeader();

//loopingthroughallcharactersinonerow

for(intj=1;j<=94;j++){

bytehi=(byte)(0xA0+i);

bytelo=(byte)(0xA0+j);

if(validGB(i,j)){

//gettingGB,UTF-16BE,UTF-8codes

gbbb=ByteBuffer.wrap(newbyte[]{hi,lo});

try{

cb=gbdc.decode(gbbb);

uxbb=uxec.encode(cb);

cb.rewind();

u8bb=u8ec.encode(cb);

}catch(CharacterCodingExceptione){

cb=null;

uxbb=null;

u8bb=null;

}

}else{

cb=null;

uxbb=null;

u8bb=null;

}

writeNumber(i);

writeNumber(j);

writeString("");

if(cb!

=null){

writeByte(hi);

writeByte(lo);

writeString("");

writeHex(hi);

writeHex(lo);

count++;

}else{

writeGBSpace();

writeString("null");

}

writeString("");

writeByteBuffer(uxbb,2);

writeString("");

writeByteBuffer(u8bb,3);

if(j%2==0){

writeln();

}else{

writeString("");

}

}

writeFooter();

}

}

System.out.println("NumberofGBcharactersworte:

"+count);

}

publicstaticvoidwriteln()throwsIOException{

out.write(0x0D);

out.write(0x0A);

}

publicstaticvoidwriteByte(byteb)throwsIOException{

out.write(b&0xFF);

}

publicstaticvoidwriteByteBuffer(ByteBufferb,intl)

throwsIOException{

inti=0;

if(b==null){

writeString("null");

i=2;

}else{

for(i=0;i

}

for(intj=i;j

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1