powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Perl] Не сохраняются турецкие буквы в таблицу Oracle
25 сообщений из 33, страница 1 из 2
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38243676
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Пишу программу которая извлекает данные из текстового файла в кодировке cp1254 (турецкий язык) и помещает их в таблицу базы данных Oracle с кодировкой CL8ISO8859P5. Для этого сделал таблицу с полями принимающими юникод (nvarchar2). Пробовал использовать библиотеку Encode, пробовал менять переменные окружения текущей сессии, но всё равно специфические турецкие буквы меняются на знаки вопроса (POL??PORT K??MYA SAN.VE T??C.A.??.) или в таблицу вставляются пустые строки. Если считанные данные вставлять в другой текстовый файл, то буквы сохраняются, и если сделать вставку из другой таблицы, где уже есть турецкие буквы, в таблицу используя запрос, минуя переменные, то буквы тоже сохраняются. Пробовал получить дамп строки до всех преобразований, получил POL\x{130}PORT K\x{130}MYA SAN.VE T\x{130}C.A.\x{15e}. Помогите пожалуйста, уже три недели мучаюсь.

Код: php
1.
2.
3.
$ENV{ORA_NCHAR_LITERAL_REPLACE} = 'TRUE';
$ENV{NLS_DATE_FORMAT} = 'DDMMYYYY';
$ENV{NLS_LANG} = "AMERICAN_AMERICA.TR8MSWIN1254";



Код: php
1.
open OUTFILE, "<:encoding(cp1254)", $in_file || die "Error open file ${file_name}: $!";



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
$l_temp_3 = $col_09;
$insert1 = "INSERT INTO xxfin.xxfin_test_load_file_2
                   (text_tr,
                    text_en,
                    creation_date)
                 VALUES
                   (?, 
                    ?,
                    sysdate)";
     $i1 = $dbh_ora->prepare($insert1);
     if (!$i1) 
       {
        print STDERR "Error:" . $dbh_ora->errstr() . "\n";
        exit 1;
       }
              
     Encode::from_to($l_temp_3, 'cp1254', 'UTF-16BE');
     
     $i1->bind_param(1, $l_temp_3);
     $i1->bind_param(2, $col_09);
     if (!$i1->execute())
       {
        print STDERR "Error:" . $i1->errstr() . "\n";
        exit 1;
       }
     $i1->finish();
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38244771
Gijad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mops,
Забудьте про все эти кодировки. Приводите всё к unicode.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245218
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gijadmops,
Забудьте про все эти кодировки. Приводите всё к unicode.
Да я бы с радостью, что в принципе и пытаюсь сделать
Код: php
1.
2.
Encode::_utf8_off($l_temp_3);
Encode::from_to($l_temp_3, 'cp1254', 'UTF-16BE');


Но в таблицу вставляются пустые значения.

Пробовал приводить данные к utf8, тогда в таблицу вставляется POL????PORT K????MYA SAN.VE T????C.A.?????.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245237
mhx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mhx
Гость
Был бы мускуль, вам бы тут быстро кучу советов надавали, а так...
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245272
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mhx,
Мне кажется здесь дело не в базе данных, а в способе передать в неё данные в нужном виде. Где то происходит неявная перекодировка данных, потому что схема insert into <table1> select <field> from <table2> проходит без проблем.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245282
S_Andrey_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с Ораклом через что соединяешься?
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245286
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Andrey_A,

С помощью клиента ораклового
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245292
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Andrey_A,

Если ты про библиотеки, то использую в программе
Код: php
1.
2.
use DBI qw(:sql_types);
use DBD::Oracle qw(:ora_types);
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245312
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее только
Код: php
1.
use DBI qw(:sql_types);



Вот полный текст программы
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
#!/usr/local/bin/perl                                     
#
#

  use DBI qw(:sql_types);
#  use DBD::Oracle qw(:ora_types);
  use Encode qw(encode decode from_to);
  use File::Copy;
  use strict;
  use utf8;
  use open qw(:std :utf8); 
  use Data::Dumper;
#  use Text::Iconv;
#------ my parameters --------------
  my $org_id;
  my $file_name;
  my $user;
  my $password;
  my $dsn_ora;
  my $dbh_ora;
  my $sys_arg;
  my $my_arg;
  my $all_arg;
  my $pone;
  my @p_arg;
  my $j;
  my $in_file;
  my $str;
#-----------------------------------
  my $col_01;
  my $col_02;  
  my $col_03;
  my $col_04;
  my $col_05;
  my $col_06;
  my $col_07;
  my $col_08;
  my $col_09;
  my $col_10;
  my $col_11;
  my $col_12;
#-----------------------------------
  my $insert1;
  my $i1;
#-----------------------------------
  my $FCP_LOGIN;
  my $l_temp_3;
  
  binmode (STDERR, ':utf8');

  my $OA_HTML = $ENV{OA_HTML};
  my $APPL_OUT = $ENV{APPLCSF}.'/'.$ENV{APPLOUT};
  my $APPL_TOP = $ENV{APPL_TOP};

  if (@ARGV[0] eq '')
    {
     print "Error! No enter parameters. \n";
     exit(1);
    }  

## for 11i
##------------------------------------------------
  $all_arg = @ARGV[0];
    $pone=0;
    
     for ($j = 1; $j < scalar(@ARGV); ++$j){
       if((@ARGV[$j] =~ /^\"(\S+)\"/i)&&($pone==0)){
          $all_arg .= '  ' . @ARGV[$j];
	   $pone = 1;
	      }else{
	          $all_arg .= ' ' . @ARGV[$j];
		    }
		     }

### divide system and user parameters

  ($sys_arg, $my_arg ) = split(/  /, $all_arg);               

### take array @p_arg user parameters

  $my_arg = substr($my_arg, 1, length($my_arg)-2);

  @p_arg = split(/" "/, $my_arg);

  print STDERR "Start with parameters:\n";

  $org_id = @p_arg[0];
  $file_name = @p_arg[1];

  print STDERR "Org_id = $org_id \nFile_name = $file_name \n";

### Look system parameters
   if($sys_arg =~ /FCP_REQID=(\S+)\s+/i){
      print STDERR "FCP_REQID = $1\n";
      my $FCP_REQID = $1;
   }else{
      print STDERR "No parameter FCP_REQID\n";
      exit(1);
   }

   if($sys_arg =~ /FCP_LOGIN=\"(\S+)\"\s+/i){
      $FCP_LOGIN = $1;
   }else{
      print STDERR "No parameter FCP_LOGIN\n";
      exit(1);
   }

   if($sys_arg =~ /FCP_USERNAME=\"(\S+)\"\s+/i){
      my $FCP_USERNAME = substr($1,0,8);
   }else{
      print STDERR "No parameter FCP_USERNAME\n";
      exit(1);
   }

  $user = $FCP_LOGIN;
  $password = '';

  $ENV{ORA_NCHAR_LITERAL_REPLACE} = 'TRUE';
  $ENV{NLS_DATE_FORMAT} = 'DDMMYYYY';
  $ENV{NLS_LANG} = "TURKISH_TURKEY.TR8MSWIN1254";

##------ Connect --------------  
   $dsn_ora = 'dbi:Oracle:';
   $dbh_ora = DBI->connect($dsn_ora, $user, $password, {AutoCommit => 0});
   $dbh_ora->{pg_enable_utf8} = 1;
   if (!$dbh_ora) {
      print STDERR "\nConnection error\n";
      print STDERR "Error:" . $DBI::errstr . "\n";
      exit 1;
   }

   $dbh_ora->{LongReadLen} = 512 * 1024;

##---------- Open file -----------------
  $in_file = "${APPL_TOP}/xxupload/${file_name}";
  open OUTFILE, "<:encoding(cp1254)", $in_file || die "Error open file ${file_name}: $!";
#---------------------------------------
  while (<OUTFILE>)
    {
     $str = $_;
     next if (substr($str, 0, 1) eq '-');
     #------------------------------------------
     $col_01 = substr($str, 0, 5);     # B SUB
     $col_02 = substr($str, 6, 7);     # B HESAP
     $col_03 = substr($str, 14, 4);    # BNK
     $col_04 = substr($str, 19, 5);    # SUBE
     $col_05 = substr($str, 25, 19);   # ALACAK HESAP
     $col_06 = substr($str, 45, 18);   # TUTAR
     $col_07 = substr($str, 64, 3);    # DVZ
     $col_08 = substr($str, 68, 10);   # VADE TAR
     $col_09 = substr($str, 79, 30);   # ALACAKLI ADI
     $col_10 = substr($str, 110, 50);  # TGB HESAP ADI
     $col_11 = substr($str, 161, 40);  # ISLEM ACIKLAMASI
     $col_12 = substr($str, 202, 26);  # IBAN

     $insert1 = "INSERT INTO xxfin.xxfin_test_load_file_2
                   (text_tr,
                    text_en,
                    creation_date)
                 VALUES
                   (?, 
                    ?,
                    sysdate)";
     $i1 = $dbh_ora->prepare($insert1);
     if (!$i1) 
       {
        print STDERR "Error:" . $dbh_ora->errstr() . "\n";
        exit 1;
       }
     
     print STDERR "Dump col_09 = ", Dumper $col_09;
     print STDERR "1 col_09 = $col_09\n"; 
     print STDERR "\n";

     $l_temp_3 = $col_09;

     Encode::_utf8_off($l_temp_3);
     Encode::from_to($l_temp_3, 'cp1254', 'UTF-16BE');
#     Encode::_utf8_on($l_temp_3);
     print STDERR "Dump l_temp_3 = ", Dumper $l_temp_3;
     print STDERR "\n";
     print STDERR "1 l_temp_3 = $l_temp_3\n";
     printf STDERR ("2 l_temp_3 = %s\n", $l_temp_3);
     print STDERR "==============\n";

     $i1->bind_param(1, $l_temp_3);
     $i1->bind_param(2, $col_09, SQL_LONGVARCHAR);
     if (!$i1->execute())
       {
        print STDERR "Error:" . $i1->errstr() . "\n";
        exit 1;
       }
     $i1->finish();

    } #----------- while

  close STDERR;
  close OUTFILE;

  $dbh_ora->commit() or die "Error commit: $DBI::errstr\n";
  $dbh_ora->disconnect or warn "Error disconect: $DBI::errstr\n";
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245318
S_Andrey_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А NLS_LANG какой выставлен?
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38245324
S_Andrey_A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну получается ты все конвертируешь в UTF а Оракл ждет турецкие буквы.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248458
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S_Andrey_A,
Я пробовал разные NLS_LANG выставлять, не помогает.

База данных имеет кодировку CL8ISO8859P5, она не поймёт турецкие буквы. Единственный выход создавать юникодные поля в таблице (nvarchar2). Именно в формате UTF там и хранятся данные, это проверено когда делал обратную операцию, извлекал данные и таблицы и конвертировал их в турецкую кодировку и вставлял в файл и отправлял туркам (из UTF-16BE в cp1254).
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248599
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А sqlldr - точно не загружает?
mopsБаза данных имеет кодировку CL8ISO8859P5, она не поймёт турецкие буквы
а зачем ей говорить что они турецкие. Может ее обмануть и сказать что они как раз кирилические однобайтные 8859-5.
При загрузке в поле varchar2.
И перлу сказать то же самое. Байт - он байт и есть. Вот пусть и грузит. А как они потом покажуться - как клиент настроен? Ведь иногда же varchar2 поля выгружаются на нормальном (турецком) языке.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248635
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

Не получится, в турецком языке есть буквы которых нет в кирилице, а с ними как раз и проблема, поэтому не получится сохранить их как кирилические. А выгрузка из таблицы и загрузка в таблицу проходила только с полями nvarchar2.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248643
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Турецкая кодировка однобайтная?
TR8MSWIN1254?
И русская - однобайтная?
Так в каком смысле в русском языке нет турецких букв, а в турецком - русских?
если все 256 байтов - есть.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248736
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

Я вас понял.
Сообщил программе что у меня файл написан на кирилице
Код: php
1.
open OUTFILE, "<:encoding(iso-8859-5)", $in_file || die "Error open file ${file_name}: $!";


Убрал все перекодировки и просто вставил то что извлёк в таблицу.
По дампу видно что турецкие буквы были восприняты как русские POL\x{43d}PORT K\x{43d}MYA SAN.VE T\x{43d}C.A.\x{43e}. Получается строчка POLнPORT KнMYA SAN.VE TнC.A.о., но я не уверен что турки захотят что то городить у себя чтобы преобразовать эти русские буквы в свои турецкие, там нет программистов кто бы смог за это взяться.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248745
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тип поля какой - юникодный или "нормальный"?
Я то говорю про varchar2, однобайтные поля.
mopsпотому что схема insert into <table1> select <field> from <table2> проходит без проблем.
какого типа поля в <table2> ? юникодные или однобайтные?

Если турки уже съели varchar2 - поля в русской локализации базы - то пусть и дальше едят.
(это конечно наверное нехорошо....)
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248791
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

Попробовал вставлять в поля разных типов. Если включена переменная окружения $ENV{NLS_LANG} = "TURKISH_TURKEY.TR8MSWIN1254", то и в varchar2 и в nvarchar2 вставляется POL??PORT K??MYA SAN.VE T??C.A.??. Убрав эту строчку получается POLаНPORT KаНMYA SAN.VE TаНC.A.аО., и в varchar2 и в nvarchar2, видно что турецкие буквы заменились на два символа аН и аО. Хотя в дампе по прежнему показывается POL\x{43d}PORT K\x{43d}MYA SAN.VE T\x{43d}C.A.\x{43e}.

А insert из таблицы в таблицу я делал на юникодных полях.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248812
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается хоть я и указываю кодировку файла
Код: php
1.
open OUTFILE, "<:encoding(iso-8859-5)", $in_file || die "Error open file ${file_name}: $!";

Всё равно турецкие буквы считываются как юникодные, а при вставке четыре символа из юникодного кода разбиваются по два они уже отображаются, что является неверным.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248857
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не в этом дело.
либо
$dbh_ora->{pg_enable_utf8} = 1;
либо
use utf8;

либо, что самое вероятное
Encode::from_to($l_temp_3, 'cp1254', 'UTF-16BE');
- не надо ничего перекодировать! В UTF.

Попробуйте убрать эти строчки, пусть байты будут просто байтами, как они прочлись из файла!
(ну - по моему мнению).

У вас в тех varchar2() полях где уже есть - такие же сырые байты и положены (вероятно)
- ну или покажите определения полей где турецкие буковки залиты уже.
Если Вы их через SQLPlus выгрузите - оно и будет видно. (наверное)

залейте одну строчку через SQLLoader. Указав ему, что кодировка файла УЖЕ такая, как установлена в базе, и НЕ НАДО ничего делать кроме как заливать. НЕ НАДО решать какие буквы есть, каких - нет, не надо ничего перекодировать.


Выгрузите пару строчек из таблиц где турецкие буковки нормальные через SQLPLus, посмотрите - будет ли кодировка 1254, если нет - какая?

Выполните тест на перле - подконнектится, выполнить 1 жесткий инсерт без связанных переменных, безо всяких UTF. Правильно вставит? или нет. Потом его же с забинденными переменными, но без перекодировок, значения - константами в тексте скрипта. турецкими буквами в 1254.

Пройдет? тогда прикручивайте чтение из файла и все остальное....
Ну а потом допиливайте с установками NLS_..... для переносимости между компьютерами с разными настройками......
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248880
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
про юникод

http://search.cpan.org/~pythian/DBD-Oracle-1.23/Oracle.pm

CPAN use DBD::Oracle qw( SQLCS_IMPLICIT SQLCS_NCHAR );
...
$sth->bind_param(1, $value, { ora_csform => SQLCS_NCHAR } );
Говорят, что юникодные параметры надо биндить с довеском? не знаю, не пробовал.

Дальше. Про
$dbh_ora->{pg_enable_utf8} = 1;
- гугл говорит, что это флаг от постргесса.

На оракловой странице CPAN его нет.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248908
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дальше, попробуйте в среде разработки вставить запись с осмысленными турецкими буковками.
Если получится - посмотрите на языковые параметры в
select * from v$nls_parameters, выставьте аналогичные в PERL.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38248931
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего не говорили про
NLS_NCHAR_CHARACTERSET.
Он какой?
Заведите тему аналогичную в разделе Oracle, там могут понять причину быстрее.

прагма
PERLDOCutf8 - Perl pragma to enable/disable UTF-8 (or UTF-EBCDIC) in source code http://perldoc.perl.org/utf8.html

Не влияет на прочитывание файла. Только на интерпретацию исходника. Оно зачем? в перлушке юникодных турецких букв нет.

Какой сейчас ип поля у text_tr ?
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38249168
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

Дело в том что я сейчас тренеруюсь на базе данных своего предприятия, здесь кодировка русская, и турецкие буквы я сохранял в полях типа nvarchar2(500). В дальнейшем буду цепляться через дблинк к турецкой базе и сохранять данные там (изначально я тренеровался на турецкой базе, но затем когда у меня возникли трудности, чтобы не забивать канал связи частыми запусками программы, я переключил свои тренеровки на нашу базу, что наверное неправильно, нужно снова вернуться на использование турецкой базы). Через тот же дблинк я забирал данные из Турции и вставлял в "русскую" таблицу в поля с типом nvarchar2 по схеме insert into <table1> select <field> from <table2>.

Прямую вставку из среды разработки я пробовал, в консоле запускал sqlplus, менял настройки сессии на турецкии и делал вставку. Вставку я делал в "русскую" базу в поле с типом nvarchar2.

Параметр NLS_NCHAR_CHARACTERSET что в турецкой базе, что в нашей AL16UTF16

Убрал вызов use utf8

Тип поля text_tr - nvarchar2(500). Я сделал аналогичное поле text_vr с типом varchar2(500) и сразу пробую вставить и в него.

Про довесок в параметрам вставке я встречал в просторах интернета и пробовал некоторые, они реально меняют результат вставки, но пока не нашёл все возможные значения этого параметра.
...
Рейтинг: 0 / 0
[Perl] Не сохраняются турецкие буквы в таблицу Oracle
    #38249195
mops
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov,

Отказался от всех перекодировок, сделал в турецкой таблице поле с типом varchar2 и пробую вставить данные из файла туда. До этого пытался вставить в поля с типом nvarchar2, не знаю что на меня нашло, для их базы это же родной язык и она кодировку воспримет и без юникода. Но пока тоже не получается, если менять настройки сессии $ENV{NLS_LANG} = "TURKISH_TURKEY.TR8MSWIN1254"; то вставляется POL??PORT K??MYA SAN.VE T??C.A.??., если убрать смену настроек сессии, то вставляется POLФАPORT KФАMYA SAN.VE TФАC.A.Х?.

Попробую порыть в сторону довеска к параметрам вставки. Спасибо за помощь Владимир, о результатах отпишусь.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [Perl] Не сохраняются турецкие буквы в таблицу Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]