在全球化應用程式中使用 Unicode
您可以插入和擷取 Unicode 資料。資料會在資料庫和從屬端程式之間通透地轉換,以確保從屬端程式獨立於資料庫字元集和本國字元集。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 SQL 和 PL/SQL 程式設計與 Unicode 的詳細資訊
-
Oracle Database Globalization Support Guide 以使用 Unicode 程式設計的一般資訊
SQL 和 PL/SQL 中 Unicode 字串文字的表示法
有三種方式可以代表 SQL 或 PL/SQL 中的 Unicode 字串文字,如下列範例所示。
-
N'string」
範例:
N'résumé'。限制:請參閱避免在字元集轉換期間遺失資料。
-
NCHR(number)
SQL 函數 NCHR 會傳回在本國字元集中,二進位等同於數字的字元。傳回的字元具有資料類型 NVARCHAR2。
範例:
NCHR(36)代表預設國家字元集 AL16UTF16 中的 $。限制: NCHR (number) 值的可攜性僅限於使用相同本國字元集的應用程式。
-
UNISTR('string')
SQL 函數 UNISTR 會將字串轉換成本國字元集。
為了可攜性與資料保留,Oracle 建議字串只包含 ASCII 字元與 Unicode 編碼值。Unicode 編碼值的格式為 \xxxx,其中 xxxx 是字元代碼值的十六進位值為 UCS-2 編碼格式。
範例:
UNISTR('G\0061ry')代表 'Gary'ASCII 字元轉換成資料庫字元集,然後再轉換成本國字元集。Unicode 編碼的值直接轉換成本國字元集。
另請參閱:
-
Oracle Database Globalization Support Guide,瞭解有關 Unicode 字串文字的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 NCHR 函數的詳細資訊
-
Oracle Database SQL Language Reference,瞭解有關 UNISTR 函數的詳細資訊
避免在轉換字元集時發生資料遺失
作為 SQL 或 PL/SQL 敘述句的一部分,文字 (含或不含前置碼 N) 會編碼為與敘述句其他字元集相同的字元集。在用戶端上,陳述式會以用戶端字元集 (由 NLS_LANG 參數決定) 編碼。在伺服器端,敘述句以資料庫字元集進行編碼。
當 SQL 或 PL/SQL 敘述句自從屬端傳輸至資料庫時,字元集也會隨之轉換。如果資料庫字元集不包含從屬端在文字文字所使用的所有字元,則資料會在此轉換中遺失。NCHAR 字串常值比 CHAR 文字值更為脆弱,因為它們是設計成與資料庫字元集無關。
為了避免將資料遺失轉換成不相容的資料庫字元集,您可以啟用 NCHAR 文字取代功能。如需更多資訊,請參閱 Oracle Database Globalization Support Guide。