Мне трудно вставить специальные символы (символы ударения, символы и т. Д. c ..) в мою базу данных oracle. Я могу распечатать данные на экране, но когда я вставляю в базу данных, я просто получаю коробки. Файл с разделителями табуляции по умолчанию имеет кодировку utf-16, и я установил вывод std в utf-8. Я думаю, что мне может понадобиться закодировать его перед вставкой в базу данных, но я не знаю как. Я пробовал разные вещи, но безуспешно. Есть предложения?
Спасибо
use DBI;
use DBD::Oracle;
use open ':std', ':encoding(UTF-8)';
#connection string here
$db = DBI->connect($dataSource, $dbUser, $dbPasswd);
$db || die "Error connecting to db: $DBI::errstr\n";
if(open($fh, "<:encoding(UTF-16)", $filename)){
while (my $row = <$fh>){
chomp $row;
my @responses = split (/\t/, $row);
for(my $i=17; $i<46; $i++){
my $clob = $responses[$i];
my $insert = "insert into myTable (id, data) values (?,?)";
my $insert_detail = $db->prepare($insert) || die "\nPrepare error: $DBI::err .... $DBI::errstr\n";
$insert_detail->execute('123', $clob);
}
}
}