0
如何將unicode字符保存在Oracle數據庫中,配置爲非unicode字符集(此配置無法更改)?如何使用VARCHAR2將unicode列保存在非unicode Oracle數據庫中?
文本將被保存在VARCHAR2列中(它不能是NVARCHAR2)。
如何將unicode字符保存在Oracle數據庫中,配置爲非unicode字符集(此配置無法更改)?如何使用VARCHAR2將unicode列保存在非unicode Oracle數據庫中?
文本將被保存在VARCHAR2列中(它不能是NVARCHAR2)。
有很多,你可以任意存儲數據的方式(在這種情況下,UTF編碼)在VARCHAR2
領域:
U+XXXX
form或他們的&#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.
我不認爲'utl_encode.mimeheader_encode'會工作,如果數據庫字符集不支持您試圖字符編碼。我希望字符集轉換已經將字符轉換爲數據庫字符集在調用函數之前支持的替換字符。 –
@JustinCave:這個函數可以在非Unicode數據庫中使用NVARCHAR2嗎(我現在沒有權限訪問這樣的數據庫)? –
我不相信有'NVARCHAR2'超載。你可能會使用'varchar2'傳入一個字符集,但我不確定這是否會在客戶端應用程序中工作 - 我期望字符集轉換能夠首先轉換字符集。 –