在C語言中怎樣獲得漢字編碼?
C語言中,我們用整數(shù)輸出字符得到的就是該字符的ASII碼,如用整數(shù)輸出a,得到97但是,要是用字符數(shù)組存的漢字,怎樣獲得他的編碼?漢字用的是兩個字節(jié)存儲,是不是這兩個字節(jié)都有ASII碼?那該怎么獲得他們?然后把他們統(tǒng)一成一個編碼?
漢字編碼分好幾種,不知道你想問的是哪種?
C/C++支持的是ASCII,不過漢字編碼中,GB2312與ASCII是兼容的,所以可以在C中獲得漢字的GB2312編碼
GB2312是兩個字節(jié)的,第一字節(jié)是高八位,第二字節(jié)是低八位,比如下面的程序:
#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
strcpy(a,"啊");
printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
return 0;
}
a[0]是“啊”字的高八位,a[1]是低八位,程序運行結果是a[0]=B0 a[1]=A1,用16進制表示的,所以“啊”字的GB2312編碼是B0A1了~
輸出時要強制轉(zhuǎn)換成unsigned char,不然就變成負數(shù)了,因為編碼是以8位的無符號整數(shù)為單位的
當然也可以轉(zhuǎn)成10進制啦,比如
int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];
b即為漢字的10進制GB2312編碼了
posted on 2008-09-16 01:11 死神 閱讀(3687) 評論(3) 編輯 收藏 所屬分類: C/C++