powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по NVARCHAR
5 сообщений из 5, страница 1 из 1
Вопрос по NVARCHAR
    #39464693
Air-zone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Есть БД с такими параметрами:

PARAMETERVALUENLS_CHARACTERSETCL8MSWIN1251NLS_DATE_LANGUAGERUSSIANNLS_LANGUAGERUSSIANNLS_NCHAR_CHARACTERSETUTF8NLS_RDBMS_VERSION10.2.0.4.0

Храним мы в ней русские и английские символы. Но в один прекрасный момент захотелось нам положить туда символы другого языка. Например итальянский. Захотелось нам для этого использовать строковые типы в national character set (NCHAR, NVARCHAR, NCLOB).
Сказано - сделано. Приступаем к тестированию. Работаем через PL/SQL Developer. Создаем табличку с полем NVARCHAR типа. Пытаемся положить туда данные
Код: plsql
1.
2.
3.
4.
5.
begin
  execute immediate 'truncate table test_nchar';
  insert into test_nchar(ntext) values (to_nchar('ààààà'));
  commit;
end;



Смотрим в таблицу:
NTEXT?????

Причем, если я открою таблицу на редактирование в том же PL/SQL Developer, то вписав в грид символы и закоммитив, я эти данные записать в базу могу. Все корректно пишется и селектится.

Теперь о настройках:
На клиенте и сервере NLS_LANG=RUSSIAN_RUSSIA.CL8MSWIN1251

Я прекрасно понимаю, что в CL8MSWIN1251 нет символов итальянского языка. Вопрос вот в чем: Как мне оповестить клиента, что для national character set я хочу использовать например UTF8 ?

Читаю я документацию по 8i и вижу, что там был такой параметр: NLS_NCHAR, а в 10-ке его уже нет. Значит ли это, что такой механизм уже уходит в прошлое и базу надо изначально создавать в юникоде или все таки можно как то этот механизм заставить работать?
...
Рейтинг: 0 / 0
Вопрос по NVARCHAR
    #39464797
думп 1016
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Air-zone,

Много букв. Приведенный код как соответсвует повествованию, причем здесь html-коды?
to_nchar по сути ничего не значит, ты просто вставляешь строку, указанную в кодировке бд (цифры и пунктуация) в поле nchar, что есть в исходном зачении, то и остается.
...
Рейтинг: 0 / 0
Вопрос по NVARCHAR
    #39464810
Air-zone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
думп 1016,

html-коды появились видимо в процессе добавления поста. Изначально я туда вписывал итальянские символы.
...
Рейтинг: 0 / 0
Вопрос по NVARCHAR
    #39464846
Air-zone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удалось вставить данные корректно с помощью функции UNISTR:
Код: plsql
1.
insert into test_nchar(ntext) values (UNISTR('\04A3\04A3\04A3\04A3'));



Значит ли это, что если основная кодировка базы не юникод, и если мы пытаемся вставить юникод в NCHAR'ы, то напрямую простым инсертом это не сделать? Вот что мне интересно.
...
Рейтинг: 0 / 0
Вопрос по NVARCHAR
    #39464889
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Air-zoneВопрос вот в чем: Как мне оповестить клиента, что для national character set я хочу использовать например UTF8 ?
Не волнуйся, БД знает от том, что тебе нужна кодировка UTF8 и конвертация выполняется.
Проблема, как ты и сам заметил, в кодировке клиента. Ты пойми, что из CL8MSWIN1251 ну никак не вытащить итальянские символы )
Поставь NLS_LANG=.UTF8
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по NVARCHAR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]