和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式


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



 
   
  1 和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式 /**
  2和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式* GB2312Unicde.java
  3和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式* Copyright (c) 1997-2003 by Dr. Herong Yang
  4和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式*/

  5 和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式 import  java.io. * ;
  6 和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式 import  java.nio. * ;
  7 和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式 import  java.nio.charset. * ;
  8 和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式 class  GB2312Unicde  {
  9和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式static OutputStream out = null;
 10和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式static char hexDigit[] = {'0''1''2''3''4''5''6''7',
 11和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式'8''9''A''B''C''D''E''F'}
;
 12和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式static int b_out[] = {201,267,279,293,484,587,625,657,734,782,827,
 13和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式874,901,980,5590}
;
 14和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式static int e_out[] = {216,268,280,294,494,594,632,694,748,794,836,
 15和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式894,903,994,5594}
;
 16和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void main(String[] args) {
 17和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式try {
 18和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out = new FileOutputStream("gb2312.gb");
 19和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeCode();
 20和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.close();
 21和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 catch (IOException e) {
 22和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式System.out.println(e.toString());
 23和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

 24和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

 25和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeCode() throws IOException {
 26和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式boolean reserved = false;
 27和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式String name = null;
 28和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式// GB2312 is not supported by JDK. So I am using GBK.
 29和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式CharsetDecoder gbdc = Charset.forName("GBK").newDecoder();
 30和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式CharsetEncoder uxec = Charset.forName("UTF-16BE").newEncoder();
 31和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式CharsetEncoder u8ec = Charset.forName("UTF-8").newEncoder();
 32和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式ByteBuffer gbbb = null;
 33和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式ByteBuffer uxbb = null;
 34和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式ByteBuffer u8bb = null;
 35和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式CharBuffer cb = null;
 36和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式int count = 0;
 37和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (int i=1; i<=94; i++{
 38和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式// Defining row settings
 39和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (i>=1 && i<=9{
 40和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式reserved = false;
 41和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式name = "Graphic symbols";
 42和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else if (i>=10 && i<=15{
 43和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式reserved = true;
 44和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式name = "Reserved";
 45和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else if (i>=16 && i<=55{
 46和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式reserved = false;
 47和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式name = "Level 1 characters";
 48和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else if (i>=56 && i<=87{
 49和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式reserved = false;
 50和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式name = "Level 2 characters";
 51和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else if (i>=88 && i<=94{
 52和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式reserved = true;
 53和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式name = "Reserved";
 54和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

 55和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式// writing row title
 56和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
 57和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("<p>");
 58和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeNumber(i);
 59和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" Row: "+name);
 60和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
 61和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("</p>");
 62和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
 63和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (!reserved) {
 64和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
 65和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeHeader();
 66和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式// looping through all characters in one row
 67和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (int j=1; j<=94; j++{
 68和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式byte hi = (byte)(0xA0 + i);
 69和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式byte lo = (byte)(0xA0 + j);
 70和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (validGB(i,j)) {
 71和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式// getting GB, UTF-16BE, UTF-8 codes
 72和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式gbbb = ByteBuffer.wrap(new byte[]{hi,lo});
 73和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式try {
 74和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式cb = gbdc.decode(gbbb);
 75和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式uxbb = uxec.encode(cb);
 76和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式cb.rewind();
 77和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式u8bb = u8ec.encode(cb);
 78和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 catch (CharacterCodingException e) {
 79和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式cb = null;
 80和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式uxbb = null;
 81和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式u8bb = null;
 82和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

 83和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else {
 84和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式cb = null;
 85和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式uxbb = null;
 86和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式u8bb = null;
 87和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

 88和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeNumber(i);
 89和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeNumber(j);
 90和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" ");
 91和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (cb!=null{
 92和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeByte(hi);
 93和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeByte(lo);
 94和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" ");
 95和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeHex(hi);
 96和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeHex(lo);
 97和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式count++;
 98和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else {
 99和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeGBSpace();
100和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" null");
101和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

102和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" ");
103和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeByteBuffer(uxbb,2);
104和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" ");
105和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeByteBuffer(u8bb,3);
106和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (j%2 == 0{
107和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
108和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else {
109和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("   ");
110和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

111和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

112和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeFooter();
113和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

114和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

115和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式System.out.println("Number of GB characters worte: "+count);
116和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

117和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeln() throws IOException {
118和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write(0x0D);
119和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write(0x0A);
120和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

121和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeByte(byte b) throws IOException {
122和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write(b & 0xFF);
123和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

124和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeByteBuffer(ByteBuffer b, int l)
125和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式throws IOException {
126和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式int i = 0;
127和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (b==null{
128和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("null");
129和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式= 2;
130和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}
 else {
131和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (i=0; i<b.limit(); i++) writeHex(b.get(i));
132和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

133和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (int j=i; j<l; j++) writeString("  ");
134和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

135和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeGBSpace() throws IOException {
136和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write(0xA1);
137和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write(0xA1);
138和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

139和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeString(String s) throws IOException {
140和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (s!=null{
141和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (int i=0; i<s.length(); i++{
142和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write((int) (s.charAt(i) & 0xFF));
143和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

144和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

145和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

146和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeNumber(int i) throws IOException {
147和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式String s = "00" + String.valueOf(i);
148和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(s.substring(s.length()-2,s.length()));
149和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

150和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeHex(byte b) throws IOException {
151和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write((int) hexDigit[(b >> 4& 0x0F]);
152和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式out.write((int) hexDigit[b & 0x0F]);
153和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

154和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeHeader() throws IOException {
155和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("<pre>");
156和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
157和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("Q.W. ");
158和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeGBSpace();
159和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" GB   Uni. UTF-8 ");
160和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("   ");
161和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("Q.W. ");
162和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeGBSpace();
163和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString(" GB   Uni. UTF-8 ");
164和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
165和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
166和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

167和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static void writeFooter() throws IOException {
168和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeString("</pre>");
169和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式writeln();
170和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

171和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式public static boolean validGB(int i,int j) {
172和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式for (int l=0; l<b_out.length; l++{
173和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式if (i*100+j>=b_out[l] && i*100+j<=e_out[l]) return false;
174和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

175和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式return true;
176和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

177和荣笔记 -- 从 GB2312 到 Unicode 转换表制作程式}

你可能感兴趣的:(unicode)