Назад | Перейти на главную страницу

Запуск SQL * Plus с bash приводит к неправильной кодировке

У меня проблема с запуском SQL * Plus в bash. Вот мой код

#!/bin/bash

#curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql
wget -O script.sql 192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql
set NLS_LANG=_.UTF8
sqlplus /nolog << ENDL
connect login/password 
set sqlblanklines on
start script.sql
exit
<<endl

Я загружаю инструкции вставки из нашей интрасети, помещаю их в файл sql и запускаю через SQL * Plus. Это нормально работает. Моя проблема в том, что когда я сохраняю файл script.sql, моя кодировка идет не так. Все специальные символы (например, íášč) не работают, что приводит к вставке неправильных символов в мою БД. Кодировка этого файла - UTF-8, также UTF-8 установлен на странице XSQL в нашей интрасети. Так что я действительно не знаю, где может быть проблема.

Также приветствуются любые советы по поводу моего сценария, я новичок в написании сценариев Linux :-)

Хорошо, проблема была не в файле (кодировка была UTF-8, как и должно быть), а в настройке переменной окружения Oracle NLS_LANG. Итак, решение помещало эту строку перед выполнением сценария SQL * Plus

NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG

Возможно, вам потребуется преобразовать ваши вставки в кодовую страницу ISO8859. Проверьте кодировку, используемую на вашем сервере Oracle. Кодировка должна выглядеть как «WE8ISO8859P1» или что-то в этом роде, что укажет на используемую кодовую страницу ISO.

Ты можешь использовать iconv или что-то подобное, чтобы преобразовать ваш файл из кодировки UTF-8 в кодировку ISO8859, затем попробуйте запустить его через SQL * Plus.