У меня есть сценарий SQL, который содержит следующую инструкцию:
insert into employee(fname,lname) values('Jörg','Müller');
Моя кодировка базы данных установлена на AL32UTF8, но когда я выполняю скрипт в SQLПлюс немецкие буквы Ö и Ü сохраняются неправильно. Как я могу установить кодировку SQLPlus для UTF-8?
Можно ли установить кодировку SQL * Plus в UTF-8 в моем файле сценария (файл сценария sql содержит команду для установки кодировки в UTF-8)?
Моя среда выполнения — Window, но скрипт также должен работать в Unix. Моя версия оракула 19с.





Обычно вы используете переменную среды NLS_LANG и, например, устанавливаете ее следующим образом в Windows: SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8
Установка только NLS_LANG не влияет на SQLplus
В своем вопросе вы прямо написали, что хотите использовать кодировку utf8, но закодирован ли ваш исходный файл в кодировке utf8? Вообще говоря, кодировка вашего исходного файла должна совпадать с кодировкой nls_lang.
Правильно, пока вы запускаете только существующий SQL-файл и не запускаете никаких ручных команд INSERT, кодовая страница терминала не имеет значения.
SQL*Plus наследует набор символов из окна cmd. Вам нужно установить кодировку UTF-8 и сообщить об этом Oracle. Это делается параметром NLS_LANG.
Попробуй это:
chcp 65001
set NLS_LANG=.AL32UTF8
sqlplus ....
Конечно, это работает только в том случае, если ваш sql-файл также сохранен в кодировке UTF-8. В противном случае вам необходимо адаптировать наборы символов сверху.
если вы используете, скажем, приглашение CMD терминала Windows, вам необходимо убедиться, что для кодировки Windows ТАКЖЕ установлено значение Unicode — пожалуйста, опишите свою среду выполнения, а также версию Oracle