LINUX.ORG.RU
ФорумAdmin

-->Perl-->DBI-->Oracle-->


0

0

Доброе время суток. Такая проблема: 1. При попытке записи руского текста Perlом в Oracle в таблице получаем перекодированую в транслатиницу запись (Привет Всем --> pRIWET vSEM) , да да, именно со сменой регистра. 2. При попытке чтения Perlом русского текста из Oracle получаем "?????" ( Привет Всем --> ?????? ????). Английский текст и цифры зписываются и считывабтся нормально, без искажения.

Причем сам Perl с руским текстом работает нормально (тоесть обработка, запись в файл производится как надо). При считывание русского текста с Oracle под Windows с помощью Oracle SQL*Plus тоже все нормально....

Доп информация : текст в базе Oracle находится в кодировке cp-1251. Такое ощущение, что что то с DBI.....

use DBI; $dbh=DBI->connect("dbi:Oracle:host=$host1;sid=$sid1",$user1,$pass1) ;

$sth = $dbh->prepare("insert into IdBD values (3,'Привет Всем !!!')"); $sth->execute(); $sth = $dbh->prepare("select Name from IdBD "); $sth->execute(); while (( my $Name) =$sth-> fetchrow_array) { print $Name; } exit;

У кого есть идеи как можно заставить это все работать нормально??? Perl 5.00503 DBD-Oracle-1.12 RH 7.1

это пример на кои-8 думаю на вынь переделать сможешь сам :)

$NLS_LANG = 'RUSSIAN_CIS.CL8KOI8R'; $ORACLE_HOME = '/export/home/oracle/app/oracle/product/8.0.5.1'; $ORA_NLS = '/export/home/oracle/app/oracle/product/8.0.5.1/ocommon/nls/admin/data'; $ORA_NLS33 = '/export/home/oracle/app/oracle/product/8.0.5.1/ocommon/nls/admin/data';

ValeNT

anonymous
()
Ответ на: комментарий от anonymous

забыл добавить главное :)

#инициализация переменных окружения для СУБД Oracle $ENV{NLS_LANG} = $NLS_LANG; $ENV{ORACLE_HOME} = $ORACLE_HOME; $ENV{ORA_NLS} = $ORA_NLS; $ENV{ORA_NLS33} = $ORA_NLS33;

ValeNT

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.