日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

教你制作GBK與Unicode的對(duì)照表_Web標(biāo)準(zhǔn)教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!
前段時(shí)間,在所參與的項(xiàng)目中碰到了一個(gè)unicode與gb之間轉(zhuǎn)碼失敗的問(wèn)題,一些不常用漢字的編碼都被轉(zhuǎn)成了“??”,這些漢字沒(méi)有顯示出來(lái),于是自己對(duì)相關(guān)的問(wèn)題做了一些研究并最終使問(wèn)題得以解決。現(xiàn)在就結(jié)合前面兩篇的unicode與GB方面的基本原理,介紹這種制作GBK-Unicode編碼對(duì)照表的方法。

  Java的字符串String類功能強(qiáng)大,不但能進(jìn)行一些基本的字符串操作,還可以根據(jù)需要構(gòu)造指定字符集的字符串,本文所介紹的方法正是利了這一點(diǎn),這種方法的基本思路是:

  1、遍歷GBK編碼表中的所有漢字,使用該字的GB編碼構(gòu)造一個(gè)字符串。GBK編碼表中各部分的漢字分塊比較整潔,很輕易遍歷。

  2、使用getBytes()方法取得該字符的字節(jié)數(shù)組,由于Java是用unicode來(lái)表示字符的,所以此漢字的unicode就在其中。

  以下是一段示例代碼:

以下是引用片段:
{
int count = 0;
for(int segIndex=0xb0; segIndex<=0xf7; segIndex ) {
for(int charIndex=0xa1; charIndex<=0xfe; charIndex ) {
byte gbkBytes = new byte {(byte)(segIndex), (byte)charIndex};
byte unicodeBytes;
String str = new String(gbkBytes,"GBK");

unicodeBytes = str.getBytes("unicode");
if(unicodeBytes.length == 4) {
count ;
String buffer = "";
for (int i=0;i<gbkBytes.length;i )
buffer = (int)(0x00ff&gbkBytes[i]) " ";
for (int i=3;i>1;i--)
buffer = (int)(0x00ff&unicodeBytes[i]) " ";
buffer = " ";
osw.write(buffer);
}


}
}
}

  這一段是對(duì)GBK/2區(qū)的漢字進(jìn)行遍歷并處理的代碼,GBK/2區(qū)的首字節(jié)范圍在[0xb0,0xf7],尾字節(jié)范圍在[0xa1,0xfe],在構(gòu)造字符串時(shí)使用的字符集為GBK:

以下是引用片段:
String str = new String(gbkBytes,"GBK");


  在使用getBytes()取得的字節(jié)數(shù)組中會(huì)有四個(gè)元素,前兩個(gè)不知是做什么用的,可能與字符串本身的結(jié)構(gòu)有關(guān),接下來(lái)的兩個(gè)字節(jié)才是真正的unicode碼。但這兩個(gè)字節(jié)是倒序的,要從最后一個(gè)字節(jié)開(kāi)始取,之所以這樣是與big_endian和little_endian有關(guān)的,這里不多說(shuō)。

  當(dāng)每一次內(nèi)層循環(huán)結(jié)束時(shí),buffer字符串中前兩個(gè)數(shù)字就是一個(gè)GB碼,后面兩個(gè)數(shù)字就是一個(gè)unicode碼,把它寫(xiě)到文件中就行了。

  這樣的文件得到之后,再在另外的程序中載入文件,把Unicode值裝入數(shù)組,以GB碼為索引,就可以很方便地由GB碼查得Unicode碼

來(lái)源:模板無(wú)憂//所屬分類:Web標(biāo)準(zhǔn)教程/更新時(shí)間:2007-04-07
相關(guān)Web標(biāo)準(zhǔn)教程