複製鏈接
請複製以下鏈接發送給好友

寬字符

鎖定
用多個字節來代表的字符稱之為寬字符。
中文名
寬字符
外文名
wide character
定義標準
ANSI/ISO 9899-1990
定    義
用多個字節來代表的字符
VC++支持
7.0版本以上

目錄

寬字符定義

ANSI/ISO 9899--1990也就是美國國家為程序設計語言C指定的標準(也稱為ANSI C)中是這樣定義的:
Unicode只是寬字符編碼的一種實現,寬字符並不一定是Unicode。

寬字符簡稱

在Windows 1.0(1985年11月發佈)中,微軟發佈windows自有的字符集稱為ANSI字符集,因為它是基於ANSI和ISO標準的一個草案,而此草案最終稱為ANSI/ISO 8859-1--1987,這也簡稱為"拉丁語-1"。
在MS-DOS 3.3中把代碼頁的概念介紹給了IBM-PC的用户。這一概念也轉接到Windows操作系統中。代碼頁定義了字符的響應字符碼。原本的IBM字符集被稱為第437頁代碼頁,第850頁是MS-DOS Latin 1.但是代碼頁的數量超乎情理的劇增。
這裏面存在的一個基本問題是世界上的書面語言文字根本無法用256個8位代碼來表示。以前的那些涉及代碼頁和DBCS編碼已經被證明是不足和笨拙的。那時Unicode編碼也應運而生。
UNICODE字符稱為寬字符(特別是在C編程環境裏),每一個Unicode字符是16位寬而不是8位,C語言用unsigned short表示,可以存放世界上所有書面語言的大多數字符和象形文字,還包括一批數學符號和裝飾標誌的集合。Unicode最棒的一個地方是它只有一個字符集,這就避免了二義性。
Unicode標準4.0中提到
"ANSI/ISO C leaves the semantics of the wide character set to the specific implementation but requires that the characters from the portable C execution set correspond to their wide character equivalents by zero extension."
當今時代,為了應用程序的國際化,應該提倡使用UNICODE來編寫程序!
VC++6.0之前沒有關鍵字wchar_t,用unsigned short表示WCHAR;
VC++7.0之後有了關鍵字wchar_t,用來表示WCHAR,及寬字符;
Unicode 是支持所有字符集(包括無法以單個字節表示的字符集)的規範。為國際市場編程時應考慮使用 Unicode 或多字節字符集 (MBCS),或使程序能夠通過更改開關來生成支持兩種字符集之一的程序。
寬字符是雙字節多語言字符代碼。在當今的全球計算業內使用的大多數字符(包括技術符號和特殊的發佈字符),都可以根據 Unicode 規範表示為寬字符形式。無法以 1 個寬字符表示的字符可以通過 Unicode 的代理項功能以 Unicode 對錶示。由於每個寬字符總是以固定的 16 位大小表示,因此使用寬字符可以簡化使用國際字符集進行的編程。
寬字符字符串表示為一個 wchar_t數組並由 wchar_t* 指針指向它。可以通過用字母 L 作為字符的前綴將任何 ASCII 字符表示為寬字符形式。例如,L'\0' 是終止寬(16 位)NULL 字符。同樣,可以通過用字母 L 作為 ASCII 字符串的前綴 (L"Hello") 將任何 ASCII 字符串表示為寬字符字符串形式。
通常,寬字符在內存中佔用的空間比多字節字符多,但處理速度更快,因為很多系統的內核包括Windows NT內核都是從底層向上使用Unicode編碼的。另外,在多字節編碼中一次只能表示一個區域設置,Unicode編碼可以毫無障礙地在世界上任何書面語言的字符中轉換。