2011-07-15 32 views
0

我在文本文件AU變音,用十六進制轉儲值如何用sqlplus

cat /tmp/bb 
ü 

hexdump /tmp/bb 
0000000 bcc3 000a        
0000003 

插入與正確的十六進制值元音中的Oralce當我插入數據庫中的元音與類型VARCHAR2列( 128 CHAR)

DUMP(res,1016) 
Typ=1 Len=6 CharacterSet=UTF8: ef,bf,bd,ef,bf,bd 

字節是完全不同的。 (我的數據庫設置爲UTF8字符集)

問題如何使用sqlplus將數據插入到列中。有任何想法嗎?

回答

1

假設你的意思是你的au有一個diaeresis,而非au有一個unmlat,你可以使用UNISTR函數在SQL * Plus中輸入字符的UCS-2代碼點(U + 00FC for au with a二分法)

SQL> create table foo (
    2 col1 varchar2(1 char) 
    3 ); 

Table created. 

SQL> insert into foo values(unistr('\00fc')); 

1 row created. 

SQL> ed 
Wrote file afiedt.buf 

    1 select dump(col1, 1016) 
    2* from foo 
SQL>/

DUMP(COL1,1016) 
------------------------------------------------------------- 

Typ=1 Len=2 CharacterSet=AL32UTF8: c3,bc 

如果你只是想從文件中讀取數據到數據庫中,但是,也有可能比一切都轉化爲UCS-2代碼點更容易的選擇。

+0

我傾銷了文件內容「cat/tmp/bb」,它只是變音符號。 – kal

+0

是的數據庫數據編碼不正確,字節完全不同。 – kal

+0

@kal - 好的,編輯我的答案。 –