寬字元

寬字元

用多個位元組來代表的字元稱之為寬字元。

基本介紹

  • 中文名:寬字元
  • 外文名: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編碼可以毫無障礙地在世界上任何書面語言的字元中轉換。

相關詞條

熱門詞條

聯絡我們