使用 Unicode 資料

Unicode 規格為全世界各行各業廣泛使用的字元定義單一的編碼配置。所有電腦都以一致的方式將 Unicode 資料的位元模式以一個 Unicode 格式轉換成字元。這樣一來,同一個位元模式在所有電腦上都一定會轉換成同一個字元。資料可以自由地從一個資料庫或電腦轉換到別的資料庫或電腦,不須擔心接收系統會將位元模式轉換成錯誤的字元。

資料類型使用 1 個位元組編碼每一個字元的問題是資料類型只能表示 256 個不同的字元。這會使得不同字母 (如歐洲的字母) 的多個編碼規則或字碼頁相對較小。而且也無法處理有數千個字元的日文漢字或韓文字母的系統。

每個 MicrosoftSQL Server 定序都有定義何種位元模式表示 char、varchar 和 text 值中字元的字碼頁。不同資料行與字元常數可以指派為不同的字碼頁。用戶端電腦使用與作業系統地區設定相關的字碼頁來解譯位元模式。字碼頁有許多種,有的字元出現在部份字碼頁,有的則否。有些字元在某些字碼頁中定義為某個位元模式,在其他字碼頁中又定義為另一種位元模式。當您在建立必須處理不同語言的國際系統時,很難為所有電腦挑選符合多個國家/地區需求的字碼頁。也很難確保每部電腦在與使用不同字碼頁的系統中溝通時能夠執行正確的轉換。

Unicode 規格以 2 個位元組為每個字元編碼,來解決這個問題。採用 2 個位元組的規格可以有足夠的不同模式 (65,536) 來涵蓋大部份的商業語言。因為所有 Unicode 系統都以一致的方式使用相同的位元模式來代表所有字元,所以將字元移到別的系統時,沒有轉換錯誤的問題。只要整個系統都使用 Unicode 資料類型,就可以將字元轉換問題減到最少。

在 SQL Server 中,這些資料類型都支援 Unicode 資料:

  • nchar

  • nvarchar

  • ntext

    [!附註]

    這些資料類型開頭的 n 是代表國際 (Unicode) 資料類型的 ISO 標準。

使用 nchar、nvarchar 和 ntext 分別與 char、varchar 和 text 相同,除了:

  • Unicode 支援的字元範圍較廣。

  • 儲存 Unicode 字元所需的空間較多。

  • nchar 資料行的大小上限是 4,000 個字元,而非 char 和 varchar 的 8,000 個字元。

  • nvarchar 資料行的大小上限使用最大的規範,為 2^31-1 個位元組。如需有關 nvarchar(max) 的詳細資訊,請參閱<使用大數值資料類型>。

  • 指定 Unicode 常數前面要以 N 開頭:N'A Unicode string'。

  • 所有 Unicode 資料都使用 Unicode 標準定義的字元集。用於 Unicode 資料行的 Unicode 定序是根據如區分大小寫、區分腔調字、區分假名、區分全半形和二進位等屬性。