@Talik0507
Работаю, Живу

Как победить проблему с кодировкой?

Суть вопроса.
Есть БД ORacle, создана с cl8iso8859p5 (так исторически сложилось). С давних пор все накаты патче производились с виндовых машин, где в консоли предварительно прописывали переменную set NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 и все отлично накатывалось.

Сейчас возникала необходимость накатывать патч с линуксовой машины.
При стягивании файлов скриптов с SVN файлы получают кодировку ISO-8859-1, и русские символы получаются в виде кракозябр, в таком виде же ложаться в БД.
locale выставлена по умолчанию UTF-8.

опытным путем подобрал кодировку, в которой все отображается корректно.
iconv -f cp1251 package_name.sql.

Надо сконвертить в UTF-8 подумал я и так и сделал.

Когда начал накатывать скрипты столкнулся с проблемой вставки. Те значения, которые ранее были корректны, внезапно перестали влазить в колонку таблицы. Где-то нашел, что это эффект из-за UTF-8. Теперь я вступоре, решая одну проблему, получаю еще кучу.

Может кто сталкивался с подобными проблемами перевода кодировок и наката скриптов ?
  • Вопрос задан
  • 6539 просмотров
Пригласить эксперта
Ответы на вопрос 2
@protven
Установите и попробуйте так:

export NLS_LANG=AMERICAN_AMERICA.UTF8
export LC_ALL=ru_RU.utf8
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
это эффект из-за UTF-8

Совершенно верно, один символ UTF-8 занимает два байта. Поэтому размер всех текстовых полей придется в таком случае умножить на два.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы