2012-07-04 53 views
0

我正在使用在WebSphere上運行並與Oracle數據庫交互的Web應用程序(使用AL32UTF8字符集)。歐元符號如何存儲在Oracle(AL32UTF8字符集)中的CLOB字段中?

如果我使用Web應用程序輸入一些文本,然後按下「保存」按鈕,我希望文本保存到Oracle數據庫中的CLOB字段。 Web應用程序中有功能通過從數據庫中檢索文本來查看文本。

當我輸入包含歐元符號(€)的文本時,按下「保存」按鈕,並使用Web應用程序查看文本,發現歐元符號已損壞爲「?」。

我想查找文本是否在數據庫中損壞。

  1. 是否在Oracle中將歐元符號存儲爲「0xE2 0x82 0xAC」(3個字節)?

  2. 如果是這樣,是否有數據庫查詢可以證實這一點? (可以說這個表叫做SOME_TABLE,而CLOB字段叫做SOME_FIELD。)

非常感謝。

回答

1

它的存儲方式與varchar2相同,看起來是3個字節。您可以使用dump function來查看它是如何存儲的,但使用clob您需要提取相關字符(本例中爲3字節),例如與dbms_lob.substr。這是11gR2的Linux上:

create table t42 (x clob, y varchar2(10)); 

insert into t42(x, y) values ('€','€'); 

select dump(dbms_lob.substr(x,3,1)) from t42; 

DUMP(DBMS_LOB.SUBSTR(X,3,1)) 
-------------------------------------------------------------------------------- 
Typ=1 Len=6: 195,162,194,130,194,172 

select dump(y) from t42; 

DUMP(Y) 
-------------------------------------------------------------------------------- 
Typ=1 Len=6: 195,162,194,130,194,172 

或者十六進制:

select dump(dbms_lob.substr(x,3,1),16) from t42; 

DUMP(DBMS_LOB.SUBSTR(X,3,1),16) 
-------------------------------------------------------------------------------- 
Typ=1 Len=6: c3,a2,c2,82,c2,ac 
相關問題