關於Unicode的小知識

Unicode是Apple和Xerox公司於1988年建立的技術標準,其目的是爲了能夠表示各種語言中的字符(漢語使用256個字符進行表示是遠遠不夠的)

Unicode就是字符串中的所有字符都是16位的(寬字符)。這樣,對於字符的編碼就有65536個。可以適應各種語言的編碼要求。

以下是Unicode字符的分配:

0 0 0 0 - 0 0 7 F         A S C I I                                  0 3 0 0 - 0 3 6 F         通用區分標誌
0 0 8 0 - 0 0 F F         拉丁文1字符                         0 4 0 0 - 0 4 F F         西裏爾字母
0 1 0 0 - 0 1 7 F         歐洲拉丁文                            0 5 3 0 - 0 5 8 F        亞美尼亞文
0 1 8 0 - 0 1 F F         擴充拉丁文                            0 5 9 0 - 0 5 F F        西伯萊文
0 2 5 0 - 0 2 A F         標準拼音                                0 6 0 0 - 0 6 F F        阿拉伯文
0 2 B 0 - 0 2 F F         修改型字母                            0 9 0 0 - 0 9 7 F       梵文

Window2000即支持Unicode也支持ANSI

Window98只支持ANSI,對於Unicode編程比較麻煩

Window CE只支持Unicode;

COM接口中的方法只支持Unicode;

MS爲Unicode設計了專門的Windows API,只需要定義兩個宏(UNICODE和_UNICODE)就可以實現Unicode和ANSI程序的轉換。

標準C定義了寬字符類新:typedef unsigned short wchar_t;

一些標準C的ANSI字符串函數也做了相應的補充來支持Unicode,具體如下:

char* strcat(char*,const char*);  wchar_t* wcscat(wchar_t*,const wchar_t*);

char* strchr(char*,const char*); wchar_t* wcschr(wchar_t*,const wchar_t*);

int strcmp(const char*,const char*);int wcscmp(const wchar_t*,const wchar_t*);

char* strcpy(char*,const char*); wchar_t wcscpy(wchar_t*,const wchar_t*);

size_t strlen(const char*); size_t wcslen(const wchar_t*);

要創建同時爲UNSI和Unicode編譯的單個源文件必須包含TChar.h文件,而不是String.h文件。

要定義一個UNSI和Unicode通用字符串,需要使用TCHAR數據類型,當定義_UNICODE時,TCHAR的定義爲:typedef wchar_t TCHAR;否則其定義爲:typedef char TCHAR;

要給一個TCHAR類型的字符串指針爭取賦值則使用_TEXT宏,當定義了_UNICODE時,_TEXT的定義爲:#define _TEXT(x) L##x,否則其爲:#define _TEXT(x) x;

_UNICODE宏用於C運行期頭文件,UNICODE宏用於Windows頭文件

Windows中的UNSI和Unicode函數也時通過宏替換來實現的,當定義UNICODE時,使用寬字符函數,否則使用ANSI函數;

儘量使用windows字符串函數,因爲他們有可能已經被其他應用程序調用從而已經裝載進了RAM,所以速度會快些,而要使用這些函數,必須包含:ShlWApi.h頭文件,

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章