Как вставить умлаут с правильным шестнадцатеричным значением в Oralce, используя sqlplus - PullRequest
0 голосов
/ 15 июля 2011

У меня есть ум в текстовом файле со значением шестнадцатеричного дампа

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. Есть идеи?

1 Ответ

1 голос
/ 15 июля 2011

Если вы имеете в виду, что у вас au с диарезом, а не au с unmlat, вы можете использовать функцию UNISTR для ввода кодовой точки UCS-2 символа в SQL * Plus (U + 00FC для au с диарезом)

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...