UNICODE

UNICODE   
    計算機發明後,爲了在計算機中表示字符,人們制定了一種編碼,叫ASCII碼。ASCII碼由一個字節中的7位(bit)表示,範圍是0x00   -   0x7F   共128個字符。他們以爲這128個數字就足夠表示abcd....ABCD....1234   這些字符了。   
    咳......說英語的人就是“笨”!後來他們突然發現,如果需要按照表格方式打印這些字符的時候,缺少了“製表符”。於是又擴展了ASCII的定義,使用一個字節的全部8位(bit)來表示字符了,這就叫擴展ASCII碼。範圍是0x00   -   0xFF   共256個字符。   
    咳......說中文的人就是聰明!中國人利用連續2個擴展ASCII碼的擴展區域(0xA0以後)來表示一個漢字,該方法的標準叫GB-2312。後來,日文、韓文、阿拉伯文、臺灣繁體(BIG-5)......都使用類似的方法擴展了本地字符集的定義,現在統一稱爲   MBCS   字符集(多字節字符集)。這個方法是有缺陷的,因爲各個國家地區定義的字符集有交集,因此使用GB-2312的軟件,就不能在BIG-5的環境下運行(顯示亂碼),反之亦然。   
    咳......說英語的人終於變“聰明”一些了。爲了把全世界人民所有的所有的文字符號都統一進行編碼,於是制定了UNICODE標準字符集。UNICODE   使用2個字節表示一個字符(unsigned   shor   int、WCHAR、_wchar_t、OLECHAR)。這下終於好啦,全世界任何一個地區的軟件,可以不用修改地就能在另一個地區運行了。雖然我用   IE   瀏覽日本網站,顯示出我不認識的日文文字,但至少不會是亂碼了。UNICODE   的範圍是   0x0000   -   0xFFFF   共6萬多個字符,其中光漢字就佔用了4萬多個。嘿嘿,中國人賺大發了:0)   
    在程序中使用各種字符集的方法   
    
              const   char   *   p   =   "Hello";   //   使用   ASCII   字符集   
              const   char   *   p   =   "你好";   //   使用   MBCS   字符集,由於   MBCS   完全兼容   ASCII,多數情況下,我們並不嚴格區分他們   
              LPCSTR   p   =   "Hello,你好";   //   意義同上   
                
              const   WCHAR   *   p   =   L"Hello,你好";   //   使用   UNICODE   字符集   
              LPCOLESTR   p   =   L"Hello,你好";   //   意義同上   
                
              //   如果預定義了_UNICODE,則表示使用UNICODE字符集;如果定義了_MBCS,則表示使用   MBCS   
              const   TCHAR   *   p   =   _T("Hello,你好");     
              LPCTSTR   p   =   _T("Hello,你好");   //   意義同上   
    在上面的例子中,T是非常有意思的一個符號(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一種中間類型,既不明確表示使用   MBCS,也不明確表示使用   UNICODE。那到底使用哪種字符集那?嘿嘿......編譯的時候決定吧。設置條件編譯的方式是VC6中,"Project/Settings.../C/C++卡片   Preprocessor   definitions"   中添加或修改   _MBCS、_UNICODE;VC.NET中,"項目/屬性/配置屬性/常規/字符集"然後用組合窗進行選擇。使用   T   類型,是非常好的習慣,嚴重推薦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章