>>Привет всем.
>>Столкнулся с такой проблемой, требуется перегнать большой объем данных из mysql в
>>оракл. Был написан скрипт на перле, который очень неплохо работает, пока
>>дело не доходит до русских строк.
>>
>>Из мускула все данные получаем в нормальной форме,
>
>Нормальная - это какая???
>
>> но при попытке вставить
>>их в Оракл, он их зачем-то переводит в UTF-8
>
>UTF-8 и есть вообще-то самое нормальное при работе с кодировками...
>
>> и в таком виде уже пытается вставить.
>>
>>Пробовал менять NLS_LANG, локаль и даже iconv-ом конвертить, но ничего дельного не
>>вышло. Может кто сталкивался с такой проблемой?
>
>Совет: если кодировка везде будет UTF-8, то должно быть все хоккей.. т.е.
>с обеими базами общаться на utf-8, и скрипт тоже должен работать
>с пониманием того что у него данные utf-8. Нормальная - это либо cp1251, либо тот же utf8 - пробовал по всякому.
Дело в том, что даже в том случае, если мы передаем данные Ораклу в кодировке UTF-8, то он пытается ее повторно перевести в UTF-8, получается непоймичто.
Дополнительно, наблюдается следующая странность:
Админ говорит, что на серваке NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251
тем не менее
select USERENV('LANGUAGE') from dual; выдает
USERENV('LANGUAGE')
----------------------------------------------------
RUSSIAN_CIS.CL8ISO8859P5
Таким образом, в случае, если в скрипте я задаю переменную окружения NLS_LANG в RUSSIAN_CIS.CL8ISO8859P5, то Оракл вносит данные не преобразуя кодировки, в случае же с предыдущим NLS_LANG производится преобразование.
Но и в этом случае он ругается, т.к. вставка проходит в неверной кодировке.