如何使用sqlplus在Oralce中插入具有正确十六进制值的umlaut
我在文本文件中有一个u umlaut,带有十六进制转储值如何使用sqlplus在Oralce中插入具有正确十六进制值的umlaut,sql,oracle,internationalization,Sql,Oracle,Internationalization,我在文本文件中有一个u umlaut,带有十六进制转储值 cat /tmp/bb ü hexdump /tmp/bb 0000000 bcc3 000a 0000003 在数据库中插入umlaut时,列的类型为VARCHAR2(128 CHAR) 字节是完全不同的。(我的数据库设置为UTF8字符集) 问题:如何使用sqlplus将数据插入列中。有什么想法吗?假设您的意思是有一个带分音符的u,而不是一个带unmlat的u,您可以使用U
cat /tmp/bb
ü
hexdump /tmp/bb
0000000 bcc3 000a
0000003
在数据库中插入umlaut时,列的类型为VARCHAR2(128 CHAR)
字节是完全不同的。(我的数据库设置为UTF8字符集)
问题:如何使用sqlplus将数据插入列中。有什么想法吗?假设您的意思是有一个带分音符的u,而不是一个带unmlat的u,您可以使用UNISTR函数在SQL*Plus中输入字符的UCS-2代码点(u+00FC表示带分音符的u)
但是,如果您只是试图将文件中的数据读取到数据库中,则可能有比将所有内容转换为UCS-2代码点更简单的选项。我转储了文件内容“cat/tmp/bb”,其中只有umlaut。是的,数据库数据编码不正确,字节完全不同。
DUMP(res,1016)
Typ=1 Len=6 CharacterSet=UTF8: ef,bf,bd,ef,bf,bd
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