国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > WEB開發 > 正文

教你制作GBK與Unicode的對照表

2024-04-27 13:53:11
字體:
來源:轉載
供稿:網友
前段時間,在所參與的項目中碰到了一個unicode與gb之間轉碼失敗的問題,一些不常用漢字的編碼都被轉成了“??”,這些漢字沒有顯示出來,于是自己對相關的問題做了一些研究并最終使問題得以解決。現在就結合前面兩篇的unicode與GB方面的基本原理,介紹這種制作GBK-Unicode編碼對照表的方法。

  Java的字符串String類功能強大,不但能進行一些基本的字符串操作,還可以根據需要構造指定字符集的字符串,本文所介紹的方法正是利了這一點,這種方法的基本思路是:

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

  2、使用getBytes()方法取得該字符的字節數組,由于Java是用unicode來表示字符的,所以此漢字的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);
}


}
}
}

  這一段是對GBK/2區的漢字進行遍歷并處理的代碼,GBK/2區的首字節范圍在[0xb0,0xf7],尾字節范圍在[0xa1,0xfe],在構造字符串時使用的字符集為GBK:

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


  在使用getBytes()取得的字節數組中會有四個元素,前兩個不知是做什么用的,可能與字符串本身的結構有關,接下來的兩個字節才是真正的unicode碼。但這兩個字節是倒序的,要從最后一個字節開始取,之所以這樣是與big_endian和little_endian有關的,這里不多說。

  當每一次內層循環結束時,buffer字符串中前兩個數字就是一個GB碼,后面兩個數字就是一個unicode碼,把它寫到文件中就行了。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 胶州市| 开原市| 河曲县| 涟源市| 扶余县| 成武县| 公安县| 湖口县| 新巴尔虎右旗| 贺州市| 汨罗市| 昭平县| 大余县| 池州市| 二连浩特市| 呼伦贝尔市| 太保市| 井研县| 辛集市| 莒南县| 双牌县| 普定县| 武邑县| 仁化县| 高雄市| 黄骅市| 垣曲县| 河北区| 镇赉县| 车致| 天柱县| 斗六市| 霍城县| 和顺县| 祥云县| 瑞丽市| 永平县| 米脂县| 文登市| 四平市| 岳阳市|