關於內碼轉換的文章,網上有不少文章,還有源**,在csdn上也有不少。就我所知道的,有兩種方法比較普遍。以gb和big5為例,一則可以構建乙個一一對應的表,到要使用的時候一查就可以了,另一種就是使用windows強大的多國語言處理函式,如widechartomultibyte和 multibytetowidechar這兩個函式,他們使用unicode作中轉,實現兩個**頁之間的轉換。
這些都有前人敘述在前,我就不多說了。我在題目中已經提到是要用用c語言進行內碼轉換,那第一種方法自然是可以實現的,不過我不希望我的**冗長無比,這種大**能不用還是不用為好,省得麻煩。至於第二種方法,要和作業系統打交道,更重要的是,windows api的風格我很不喜歡,所以我也不想用。
不過最後的方法還是和第二種方法有些相似 ,不過我不用windows api,我用標準c函式。
其實,很久以前,c就對unicode和本地化處理有了很好的支援,wcstombs和mbstowcs這兩個函式很像我前面提到的那兩個windows api,實現內碼轉換的原理也是相似的。唯一需要注意的是,在windows api中多位元組字元的**頁直接在函式中設定,而c語言則要在整個執行中設定。
設定執行時當前**頁的函式是setlocale,使用它需要包含標頭檔案,使用wcstombs和mbstowcs則要包含標頭檔案。以中文為例936**頁是簡體的,950是繁體的,當然也可以和其他漢字內碼**頁互相轉換,如utf8。下面是乙個例項。
#include
#include
#include
int main(void)
temp=setlocale(lc_all,".950");
if(-1==wcstombs(tra,uni,32))
printf("%s/t%2x %2x/r/n",tra,(unsigned char)(tra[0]),(unsigned char)(tra[1]));
system("pause");
return 0;
}
用C語言進行CGI程式設計
用c語言進行cgi程式設計 一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程 序 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動,也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏...
用C語言進行CGI程式設計
一 cgi概述 cgi 公用閘道器介面 規定了web伺服器呼叫其他可執行程式 cgi程式 的介面協議標準。web伺服器通過呼叫cgi程式實現和web瀏覽器的互動 也就是cgi程式接受web瀏覽器傳送給web伺服器的資訊,進行處理,將響應結果再回送給web伺服器及web瀏覽器。cgi程式一般完成web...
用C語言進行順序表的實現
在c語言的學習中,資料結構中的線性資料結構分為順序表和煉表,今天就簡單的實現一下靜態順序表。首先是標頭檔案的實現 seqlist.h ifndef seqlist h define seqlist h include include include define max 10 typedef int...