**:
gbk編碼
共收錄漢字21003個、符號883個,並提供1894個造字碼位,簡、繁體字融於一庫。
以兩個位元組表示乙個漢字,編碼範圍是0x8140~0xfefe,相容gb2318,並覆蓋了unicode中的所有漢字。win7記事本預設以gbk儲存漢字。
關於gbk的詳細資訊:
開發環境
win7、eclipse、mingw
執行下面這段**,
生成gbk全字元檔案gbk.txt,編碼範圍0x8140~0xfefe
。[cpp]view
plain
copy
#include
#include
intmain(
void
)
else
printf("creat file gbk.txt/n"
);
while
(start
fclose(fp);
printf("success!"
);
return
0;
} 執行後,用記事本開啟
gbk.txt檔案,可以看到其中的字元。
用「牧碼字模」軟體開啟gbk.txt檔案,選擇字型為宋體,字重為1,點陣大小16*16,對齊方式為左下,取模方式為「縱向取模、高位在下」。輸出格式選擇bin。然後點選輸出,會生成乙個temp.bin檔案,改名為gbk.bin。
gbk.bin檔案就是gbk編碼字元的點陣字型檔檔案,每32個位元組可以繪製乙個字元,例如第乙個字元『丂』的顯示如下:
取模的資料為:
0x02, 0x02, 0x02, 0xc2, 0xb2, 0x8e, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x40, 0x3f, 0x00, 0x00, 0x00, 0x00,
gbk.bin檔案中按gbk編碼的大小排列,每32個位元組可以顯示乙個字元,假設乙個字元的gbk編碼為num,那麼它的點陣資料第乙個位元組的位置就是:
(num-0x8140)*32
從這個位元組開始,讀取32個位元組,將其按按照取模方式顯示即可。
例如:用linux的終端模擬點陣螢幕,每個字元位置就是乙個點,程式如下:
[cpp]view
plain
copy
#include
#include
#include
#define start 0x8140
#define datanum 0x20
intdisplaychar(
file
*fp,unsigned
short
intdispch,
char
fillch,
char
start_x,
char
start_y);
intmain(
void
)
/** fp指向點陣字型檔二進位制檔案
* 以點陣方式顯示乙個gbk字元
* dispch是要顯示的字元,fillch是填充點陣的字元
* start_x,start_y是顯示的起始座標
*/int
displaychar(
file
*fp,unsigned
short
intdispch,
char
fillch,
char
start_x,
char
start_y)
} if(x == (start_x+15))
else
x++;
} return
0;
} 顯示效果如下:
字型檔檔案:
字模提取軟體:
點陣字型檔製作和使用 三
乙個漢字由兩個擴充套件 ascii 碼組成,第乙個擴充套件 ascii 碼用來存放區碼,第二個擴充套件 ascii 碼用來存放位碼.在 gb2312 80 標準中,將所有的漢字分為94個區,每個區有94個位可以存放94個漢字,形成了人們常說的區位碼,這樣總共就有 94 94 8836 個漢字.在點陣...
ASCII字元點陣字型檔的製作和使用
win7,eclipse,mingw ascii編碼的可列印字元是0x20 0x7e,先用執行下面這段 生成乙個包含全部可列印字元的txt檔案 cpp view plain copy include include int main int argc,char argv for i 0x20 i 0...
ASCII字元點陣字型檔的製作和使用
win7,eclipse,mingw ascii編碼的可列印字元是0x20 0x7e,先用執行下面這段 生成乙個包含全部可列印字元的txt檔案 cpp view plain copy include include int main int argc,char argv for i 0x20 i 0...