如何在非 unicode 字符集中配置的 Oracle 数据库中保存 unicode 字符(此配置无法更改)?
文本将保存在 VARCHAR2 列中(不能是 NVARCHAR2)。
如何在非 unicode 字符集中配置的 Oracle 数据库中保存 unicode 字符(此配置无法更改)?
文本将保存在 VARCHAR2 列中(不能是 NVARCHAR2)。
您可以通过多种方式在VARCHAR2
字段中存储任意数据(在本例中为 UTF 编码):
U+XXXX
形式或它们的&#YYYY
形式。只有一些字符需要转换。rawtohex
编码。您还可以使用标准功能,例如UTL_ENCODE.mimeheader_encode
:
/* needs to be checked on a non-unicode db */
SQL> declare
2 l nvarchar2(200);
3 p nvarchar2(200);
4 begin
5 l := UTL_ENCODE.MIMEHEADER_ENCODE (
6 buf => nchr(352),--'Š',
7 encode_charset => 'UTF8',
8 encoding => UTL_ENCODE.QUOTED_PRINTABLE
9 );
10 dbms_output.put_line('encoded string: ' || l);
11 p := utl_encode.mimeheader_decode (
12 buf => l
13 );
14 dbms_output.put_line('decoded string: ' || p);
15 end;
16 /
encoded string: =?UTF8?Q?=C5=A0?=
decoded string: Š
Statement processed.