Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Кодировка в связке Mysql, XML & Perl


Автор: geckelberryfinn 24.7.2006, 12:18
Суть проблемы в следующем.
Имеет XML файл с кодировкой windows-1251. Парсится XML:Simple. После чего некоторые элементы енкодируются Encode и кидаются в базу. Т.е. общая схема выглядит следующим образом:

Код

$xs1 = XML::Simple->new();
$config=$xs1->XMLin($xmlpath,forcearray => 1);
...
my $name=encode("windows-1251",$config->{'Position'}->[$i]->{'Name'});  
$name=~s/'/"/g; 
$sth=$dbh->prepare("INSERT cat_goodies VALUES(NULL,NULL,NULL, NULL,'$_[1]','$name','$price','$lastupdate',
             '$quantity',NULL,NULL,'$article','$city','$spath','0','','$parsed')");
$sth->execute();
$sth->finish();


Так вот почему-то в базу кидается уже кракозябра (т.е. в непонятной кодировке). При этом, если на месте инсерта написать print с соответсвующими параметрами, то в окне браузера все отображается читабельно. 
Есть ли какие-нибудь идеи из-за чего это недоразумение может происходить?  smile  

Автор: nitr 24.7.2006, 19:50
=) посмотри настройки твоей БД
тем более БД и кодировки тут обсуждались, вот может поможет smile
Код

$dbh->do("SET character_set_client = cp1251");
$dbh->do("SET character_set_connection = cp1251");
$dbh->do("SET character_set_results = cp1251");
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)