共用方式為


Unicode

Unicode 是全球字元編碼標準。 系統會以獨佔方式使用 Unicode 進行字元和字串作。 如需 Unicode 所有層面的詳細描述,請參閱 Unicode Standard

相較於處理字元和字串數據的較舊機制,Unicode 可簡化軟體當地語系化,並改善多語系文字處理。 藉由使用 Unicode 來代表應用程式中的字元和字串數據,您可以使用每個可能字元碼的單一二進位檔來啟用全域行銷的通用資料交換功能。 Unicode 會執行下列動作:

  • 允許任何組合的字元,從腳本和語言的任何組合,共同存在於單一檔中。
  • 定義每個字元的語意。
  • 標準化腳本行為。
  • 提供雙向文字的標準演算法。
  • 定義與其他標準的交叉對應。
  • 定義其單一字元集的多個編碼:UTF-7、UTF-8、UTF-16 和 UTF-32。 這些編碼之間的數據轉換是無損失的。

Unicode 支援全球語言所使用的許多腳本,以及大量用於發行的技術符號和特殊字元。 支援的腳本包括但不限於拉丁文、希臘文、斯拉夫文、希伯來文、阿拉伯文、德瓦納加里、泰文、漢文、韓文、韓文、平假名和片假名。 支持的語言包括但不限於德文、法文、英文、希臘文、俄文、希伯來文、阿拉伯文、印度文、泰文、中文、韓文和日文。 Unicode 目前可以代表全世界現代計算機使用的絕大多數字元,並繼續更新,使其更加完整。

開啟 Unicode 的函式描述於函式原型的 慣例。 這些函式會使用UTF-16(寬字元)編碼,這是Unicode最常見的編碼方式,也是用於Windows作系統上原生 Unicode 編碼的函式。 每個程式代碼值都是16位寬,與舊版 代碼頁相比, 字元和字串數據的方法,使用8位程式代碼值。 16 位的使用允許直接編碼 65,536 個字元。 事實上,用來轉譯人類語言的符號宇宙甚至大於這一點,而U+D800到U+DFFF範圍中的UTF-16字碼點則用來形成代號組,構成補充字元的32位編碼。 如需進一步的討論,請參閱 代理和補充字元

Unicode 字元集包含許多結合字元,例如U+0308(“ Au”),結合二角或umlaut。 Unicode 通常可以在 ''composed' 或 ''decomposed'' 窗體中代表相同的圖像:例如,“Ä” 的組成形式是單一 Unicode 字碼點 “Ä” (U+00C4),而其分解格式為 “A” + “ܔܓ(U+0041 U+0308)。 Unicode 不會為每個影像定義組成表單。 例如,越南小寫 “o” 與周光和波浪形 (“ỗ”) 以 U+006f U+0302 U+0303 (o + 周光反射 + Tilde) 表示。 如需合併字元和相關問題的進一步討論,請參閱 使用 Unicode 正規化來表示字串

為了與 8 位和 7 位環境的相容性,Unicode 也可以分別編碼為 UTF-8 和 UTF-7。 雖然 Windows 中啟用 Unicode 的函式使用 UTF-16,但也可以使用以 UTF-8 或 UTF-7 編碼的數據,在 Windows 中以多位元組字元集的形式支援,代碼頁

新的 Windows 應用程式應該使用 UTF-16 作為其內部數據表示法。 Windows 也提供對代碼頁的廣泛支援,而且可以在相同的應用程式中混合使用。 即使是以 Unicode 為基礎的新應用程式有時也不得不使用代碼頁。 代碼頁中會討論此原因。

應用程式可以使用 MultiByteToWideCharWideCharToMultiByte 函式,根據代碼頁和 Unicode 字符串在字元串之間轉換。 雖然它們的名稱是指 「MultiByte」 ,但這些函式與 單一位元組字元集 (SBCS), 雙位元組字元集 (DBCS) 和多位元組字元集 (MBCS) 代碼頁運作良好。

一般而言,Windows 應用程式應該在內部使用 UTF-16,只在介面上使用其他格式的「精簡層」中轉換。 這項技術可防止數據遺失和損毀。 每個代碼頁都支援不同的字元,但它們都不支援 Unicode 提供的完整字元範圍。 大部分的代碼頁都支援不同的子集,以不同的編碼方式。 UTF-8 和 UTF-7 的代碼頁是例外狀況,因為它們支援完整的 Unicode 字元集,而且這些編碼與 UTF-16 之間的轉換是遺失的。

從一個代碼頁所使用的編碼直接轉換成另一個代碼頁所使用的編碼數據,可能會損毀,因為不同代碼頁上的相同數據值可以編碼不同的字元。 即使您的應用程式盡可能接近介面轉換,您也應該仔細考慮要處理的數據範圍。

從 Unicode 轉換成代碼頁的數據可能會遺失數據,因為指定的代碼頁可能無法代表該特定 Unicode 數據中使用的每一個字元。 因此,請注意,如果目標代碼頁不能代表 Unicode 字串中的所有字元,WideCharToMultiByte 可能會遺失某些數據。

將代碼頁型舊版應用程式現代化以使用 Unicode 時,您可以使用泛型函式和 TEXT 巨集來維護一組來源,以便編譯應用程式的兩個版本。 一個版本支援 Unicode,另一個版本適用於 Windows 代碼頁。 使用此機制,您甚至可以將非常大的應用程式從 Windows 代碼頁轉換成 Unicode,同時維護可在轉換的所有階段編譯、建置及測試的應用程式來源。 如需詳細資訊,請參閱函式原型 慣例。

Unicode 字元和字串會使用與代碼頁型字元和字串不同的數據類型。 除了一系列的巨集和命名慣例之外,這項區別將不小心混合兩種類型的字元數據的機會降到最低。 它有助於編譯程式類型檢查,以確保只有 Unicode 參數值與預期 Unicode 字串的函式搭配使用。

字元集

排序

代理和增補字元

使用 Unicode 正規化來代表字串