我在文本文件中有一个ummlaut,带有十六进制转储值
cat /tmp/bb
ü
hexdump /tmp/bb
0000000 bcc3 000a
0000003
当我使用VARCHAR2类型的列(128 CHAR)将变音符号插入数据库时
DUMP(res,1016)
Typ=1 Len=6 CharacterSet=UTF8: ef,bf,bd,ef,bf,bd
字节完全不同。 (我的数据库设置为UTF8字符集)
问我如何使用sqlplus将数据插入列中。有什么想法吗?
答案 0 :(得分:1)
假设你的意思是你有一个分音符,而不是au与unmlat,你可以使用UNISTR函数输入SQL * Plus中的字符的UCS-2代码点(U + 00FC for au with a deresis )
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代码点可能更容易。