Unicode編碼字元的點陣顯示

2021-06-09 14:58:09 字數 1517 閱讀 6500

**

對於unicode編碼的字元,可以先將unicode編碼轉換為gbk編碼,然後利用gbk點陣字型檔(gbk.bin)顯示字元。乙個比較好的編碼轉換方法是,製作乙個按照unicode編碼順序排列的gbk編碼表,直接根據unicode編碼就可以查到對應的gbk編碼,具體的製作方法如下:

上以篇文章中已經製作了乙個gbk編碼的全字元檔案gbk.txt,用記事本開啟gbk.txt,然後以unicode編碼另存為unicode.txt檔案。

這樣的話,所有的gbk編碼字元都用unicode編碼儲存在unicode.txt中了,可以用winhex開啟unicode.txt,會發現前兩個位元組是fffe,這是unicode編碼的標識,要注意後面的unicode編碼是小端儲存。

這裡要用程式製作乙個unicode與gbk編碼相對應的檔案,該檔案每四個位元組為一組,其中前兩個位元組為unicode編碼,後兩個位元組是對應的gbk編碼,兩種編碼都以小端儲存,資料結構如下:

union code

;

這個資料結構是以gbk編碼的順序存放在檔案uni2gbk.txt中,檔案大小為128764byte。程式如下:

用程式將uni2gbk.txt檔案中的union code資料結構按照unicode編碼的順序從小到大排序,程式如下:

#include #include #define maxsize (0x7dbf)  //union code的個數

union code

;int main(void)

} printf("i=%d/n",i);

} fclose(fp);

}

排序後,為了與沒有排序的uni2gbk.txt區分,將檔名改為uni2gbkp.txt。

用winhex開啟uni2gbkp.txt,可以發現,從0到第0x80eb個位元組中的unicode編碼都是0x0020或0x003f,這些都是無用的編碼,它們所對應的gbk編碼也是無用的,都可以刪除。

刪除後,uni2gbkp.txt檔案中的union code資料結構的unicode編碼就是從0x00a4開始,以0xffe5結束。但是這些unicode編碼不是連續的,例如0x00a4之後就是0x00a7,為了方便查詢,需要在不連續的編碼中間用union code填充,對應的gbk編碼部分用0x0000填充,然後將union code中的unicode編碼全部刪除。最後生成uni2gbk.bin檔案。程式如下:

#include #include union code

;int main()

else //不連續的地方填充0

count++;

} fclose(frp);

fclose(fwp);

return 0;

}

unicode點陣字型檔檔案:

Unicode編碼字元的點陣顯示

對於unicode編碼的字元,可以先將unicode編碼轉換為gbk編碼,然後利用gbk點陣字型檔 gbk.bin 顯示字元。乙個比較好的編碼轉換方法是,製作乙個按照unicode編碼順序排列的gbk編碼表,直接根據unicode編碼就可以查到對應的gbk編碼,具體的製作方法如下 上以篇文章中已經製...

php把unicode編碼字元轉成utf 8格式

最近在採集的時候,遇到寫特殊的編碼體整個頁面所有的漢字都是unicode的字元如下 本期費用合計 本期費用合計 u54c8 u55bd 哈嘍 著實讓人頭疼一把。好在在熱心的幫助下有效解決了 第一種 適用 下面是乙個轉化函式 將uicode 轉化成 utf 8 public function unes...

unicode編碼 字元的轉換和得到漢字的區位碼

一 unicode編碼 字元的轉換截圖 二 unicode編碼 字元的轉換 using system using system.collections.generic using system.componentmodel using system.data using system.drawing...