非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.