在全球化应用程序中使用 Unicode
您可以插入和检索 Unicode 数据。数据将以透明方式在数据库和客户机程序间进行转换,可确保客户机程序独立于数据库字符集和国家字符集。
另请参见:
-
Oracle Database Globalization Support Guide(了解有关使用 Unicode 进行 SQL 和 PL/SQL 编程的详细信息)
-
Oracle Database Globalization Support Guide(了解有关使用 Unicode 进行编程的一般信息)
在 SQL 和 PL/SQL 中表示 Unicode 字符串文字
有三种方式可以表示 SQL 或 PL/SQL 中的 Unicode 字符串文字,如以下示例中所示。
-
非字符串
示例:
N'résumé'。限制:请参阅“避免在字符集转换过程中丢失数据”。
-
NCHR(number)
SQL 函数 NCHR 可返回二进制等于国家字符集中的 number 的字符。返回的字符的数据类型为 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。