UTF-8 - выпуск Oracle - PullRequest
       22

UTF-8 - выпуск Oracle

1 голос
/ 08 июня 2010

Я установил мою переменную NLS_LANG как «AMERICAN_AMERICA.AL32UTF8» в файле perl, который подключается к oracle и пытается вставить данные.

Однако, когда я вставляю запись с одним значением, имеющим этот символ «-»sql терпит неудачу.Но если я использую 'С', он вставляется просто отлично.

Что я здесь не так делаю?

Дополнительная информация: Если я изменю свой NLS_LANG на 'AMERICAN_AMERICA.UTF8', я могу вставить 'ñ'просто отлично ...

Ответы [ 2 ]

1 голос
/ 09 июня 2010

С чем это терпит неудачу?

Как правило, если возникает проблема с преобразованием символов, происходит сбой (например, запись символа с неподходящим переводом). Иногда вы получаете сообщение об ошибке, которое указывает, что столбец недостаточно велик. Обычно это происходит при попытке сохранить, например, символ, занимающий два или три байта в столбце, который допускает только один байт.

Первый шаг - подтвердить настройки базы данных

select * from V$NLS_PARAMETERS where parameter like ‘%CHARACTERSET%’;

Затем проверьте байтовый состав строк с помощью:

select dump('ñ',16), dump('Ñ',16) from dual;
0 голосов
/ 10 июня 2010

Первый запрос дает мне:

1   NLS_CHARACTERSET    AL32UTF8
2   NLS_NCHAR_CHARACTERSET  AL16UTF16

Второй запрос дает мне:

1   Typ=96 Len=2: c3,b1 Typ=96 Len=2: c3,91

Мои точные настройки БД и Perl перечислены в этом вопросе: https://stackoverflow.com/questions/3016128/dbdoracle-and-utf8-issue

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