UTL_I18N是一组由ESCAPE_REFERENCE
和UNESCAPE_REFERENCE
函数组成的服务,可以为PL/SQL编写的应用程序提供附加的全球化功能。
UTL_I18N子程序总览
子程序 | 说明 |
ESCAPE_REFERENCE Function | 将文本字符串转换为与当前文档使用的字符集不同的字符参考副本。 |
UNESCAPE_REFERENCE Function | 将包含字符引用的输入字符串转换为文本字符串。 |
STRING_TO_RAW Function | 将VARCHAR2或NVARCHAR2字符串转换为另一个字符集。结果作为RAW类型返回。 |
RAW_TO_CHAR Function | 将未在数据库字符集中编码的RAW数据转换为VARCHAR2字符串。 |
ESCAPE_REFERENCE
此函数将文本字符串转换为与当前文档使用的字符集不同的字符参考副本。字符引用主要用于HTML和XML文档中,以独立于文档的编码表示字符。字符引用可以以两种形式出现,数字字符引用和字符实体引用。支持的字符集如下:
SQL_ASCII | UTF8 | EUC_CN |
GB18030 | ISO_8859_5 | LATIN1 |
语法
UTL_I18N.ESCAPE_REFERENCE(
str IN VARCHAR2 CHARACTER SET ANY_CS,
page_cs_name IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2 CHARACTER SET str%CHARSET;
参数说明
参数名称 | 说明 |
str | 需要转义的字符串。 |
page_cs_name | 指定文档的字符集。 |
返回值
参数名称 | 说明 |
VARCHAR2 | 转义结果字符串。 |
示例
-- ESCAPE_REFERENCE
SELECT UTL_I18N.ESCAPE_REFERENCE('hello < '||chr(229),'sql_ascii') FROM dual;
escape_reference
-------------------
hello < å
(1 row)
UNESCAPE_REFERENCE
此函数从包含字符引用的输入字符串中返回一个字符串。 它将每个字符参考解码为相应的字符值。
语法
UTL_I18N.UNESCAPE_REFERENCE (
str IN VARCHAR2 CHARACTER SET ANY_CS)
RETURN VARCHAR2 CHARACTER SET str%CHARSET;
参数说明
参数名称 | 说明 |
str | 需要反转义的字符串。 |
返回值
参数名称 | 说明 |
VARCHAR2 | 反转义结果字符串。 |
示例
-- UNESCAPE_REFERENCE
SELECT UTL_I18N.UNESCAPE_REFERENCE('hello < å') FROM dual;
unescape_reference
--------------------
hello < å
(1 row)
STRING_TO_RAW
该函数将VARCHAR2或NVARCHAR2字符串转换为另一个字符集,结果作为RAW类型返回。
语法
UTL_I18N.STRING_TO_RAW(
data IN VARCHAR2 CHARACTER SET ANY_CS,
dst_charset IN VARCHAR2 DEFAULT NULL)
RETURN RAW;
参数说明
参数 | 说明 |
data | 待转换的VARCHAR2或NVARCHAR2字符串。 |
dst_charset | 目标字符集。 |
返回值
返回值 | 说明 |
RAW | 待转换字符串在目标字符集的RAW类型表示。 |
示例
该示例展示了如何将VARCHAR2类型的数据转为RAW类型数据。
SELECT utl_i18n.string_to_raw('abcdef', 'utf8') FROM dual;
string_to_raw
----------------
\x616263646566
(1 row)
RAW_TO_CHAR
该函数将未在数据库字符集中编码的RAW数据转换为VARCHAR2字符串。
语法
UTL_I18N.RAW_TO_CHAR(
data IN RAW,
src_charset IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
data | 待转换的RAW类型数据。 |
src_charset | (可选参数)指定导出RAW数据的字符集。 |
返回值
返回值 | 说明 |
VARCHAR2 | 未在数据库字符集中编码的RAW数据转换的VARCHAR2字符串。 |
示例
该示例展示了如何将未在数据库字符集中编码的RAW数据转换为VARCHAR2字符串。
SELECT utl_i18n.string_to_raw('ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'UTF8') FROM dual;
string_to_raw
--------------------------------------------------------
\x4142434445464748494a4b4c4d4e4f505152535455565758595a
(1 row)