GB2312 字符集.docx
- 文档编号:4057052
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:31
- 大小:39.93KB
GB2312 字符集.docx
《GB2312 字符集.docx》由会员分享,可在线阅读,更多相关《GB2312 字符集.docx(31页珍藏版)》请在冰豆网上搜索。
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 } publicstaticvoidwriteGBSpace()throwsIOException{ out.write(0xA1); out.write(0xA1); } publicstaticvoidwriteString(Strings)throwsIOException{ if(s! =null){ for(inti=0;i out.write((int)(s.charAt(i)&0xFF)); } } } publicstaticvoidwriteNumber(inti)throwsIOException{ Strings="00"+String.valueOf(i); writeString(s.substring(s.length()-2,s.length())); } publicstaticvoidwriteHex(byteb)throwsIOException{ out.write((int)hexDigit[(b>>4)&0x0F]); out.write((int)hexDigit[b&0x0F]); } publicstaticvoidwriteHeader()throwsIOException{ writeString(" writeln(); writeString("Q.W."); writeGBSpace(); writeString("GBUni.UTF-8"); writeString(""); writeString("Q.W."); writeGBSpace(); writeString("GBUni.UTF-8"); writeln(); writeln(); } publicstaticvoidwriteFooter()throwsIOException{ writeString(""); writeln(); } publicstaticbooleanvalidGB(inti,intj){ for(intl=0;l if(i*100+j>=b_out[l]&&i*100+j<=e_out[l])returnfalse; } returntrue; } } GB2312(SimplifiedChinese)charactercodetable code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A1A0 、。 ·ˉˇ¨〃々—~‖…‘’ A1B0“”〔〕〈〉《》「」『』〖〗【】 A1C0±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠ A1D0⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵ A1E0∴♂♀°′″℃$¤¢£‰§№☆★ A1F0○●◎◇◆□■△▲※→←↑↓〓 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A2A0ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ A2B0⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖ A2C0⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾ A2D0⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦ A2E0⑧⑨⑩€㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ A2F0ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A3A0! "#¥%&'()*+,-./ A3B00123456789: ;<=>? A3C0@ABCDEFGHIJKLMNO A3D0PQRSTUVWXYZ[\]^_ A3E0`abcdefghijklmno A3F0pqrstuvwxyz{|} ̄ code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A4A0ぁあぃいぅうぇえぉおかがきぎく A4B0ぐけげこごさざしじすずせぜそぞた A4C0だちぢっつづてでとどなにぬねのは A4D0ばぱひびぴふぶぷへべぺほぼぽまみ A4E0むめもゃやゅゆょよらりるれろゎわ A4F0ゐゑをん code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A5A0ァアィイゥウェエォオカガキギク A5B0グケゲコゴサザシジスズセゼソゾタ A5C0ダチヂッツヅテデトドナニヌネノハ A5D0バパヒビピフブプヘベペホボポマミ A5E0ムメモャヤュユョヨラリルレロヮワ A5F0ヰヱヲンヴヵヶ code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A6A0ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ A6B0ΠΡΣΤΥΦΧΨΩ A6C0αβγδεζηθικλμνξο A6D0πρστυφχψω A6E0︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼ A6F0︷︸︱︳︴ code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A7A0АБВГДЕЁЖЗИЙКЛМН A7B0ОПРСТУФХЦЧШЩЪЫЬЭ A7C0ЮЯ A7D0абвгдеёжзийклмн A7E0опрстуфхцчшщъыьэ A7F0юя code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A8A0āáǎàēéěèīíǐìōóǒ A8B0òūúǔùǖǘǚǜüêɑńňǹ A8C0ɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ A8D0ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟ A8E0ㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ A8F0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F A9A0─━│┃┄┅┆┇┈┉┊┋ A9B0┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛ A9C0├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫ A9D0┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻ A9E0┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋ A9F0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F AAA0 AAB0 AAC0 AAD0 AAE0 AAF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F ABA0 ABB0 ABC0 ABD0 ABE0 ABF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F ACA0 ACB0 ACC0 ACD0 ACE0 ACF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F ADA0 ADB0 ADC0 ADD0 ADE0 ADF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F AEA0 AEB0 AEC0 AED0 AEE0 AEF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F AFA0 AFB0 AFC0 AFD0 AFE0 AFF0 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F B0A0啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘 B0B0鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱 B0C0袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋 B0D0靶把耙坝霸罢爸白柏百摆佰败拜稗斑 B0E0班搬扳般颁板版扮拌伴瓣半办绊邦帮 B0F0梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F B1A0薄雹保堡饱宝抱报暴豹鲍爆杯碑悲 B1B0卑北辈背贝钡倍狈备惫焙被奔苯本笨 B1C0崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕 B1D0毙毖币庇痹闭敝弊必辟壁臂避陛鞭边 B1E0编贬扁便变卞辨辩辫遍标彪膘表鳖憋 B1F0别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F B2A0病并玻菠播拨钵波博勃搏铂箔伯帛 B2B0舶脖膊渤泊驳捕卜哺补埠不布步簿部 B2C0怖擦猜裁材才财睬踩采彩菜蔡餐参蚕 B2D0残惭惨灿苍舱仓沧藏操糙槽曹草厕策 B2E0侧册测层蹭插叉茬茶查碴搽察岔差诧 B2F0拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖 code+0+1+2+3+4+5+6+7+8+9+A+B+C+D+E+F B3A0场尝常长");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GB2312 字符集