Здравствуйте!
Мне нужно из Perl добавлять в базу MySQL имена файлов.
Имена у меня могут содержать любые символы, в том числе русские буквы.
Сделал я это так:
my $dbh = DBI->connect("DBI:mysql:database=$dbname;host=$dbhost",
$dbuser, $dbpass,{'RaiseError' => 1});
$dbh->do("INSERT INTO myfiles (fsize,path,name) VALUES ($fsize,'$path','$name')");
Где $name - строка, содержащая имя файла.
Но всё это приводит к проблемам:
При выполнении программы, если в имени файла оказались какие-нибудь служебные символы (например '), выдаётся ошибка!
А русские буквы превращяютс в знаки ?
Поле в MySQL имеет тип TEXT и Charset=1251
Может быть дело в типе поля и лучше сделать его бинарным?
Но опять же, проблема наверняка в том, что данные передаются в тексте команды, и там не может быть некоторых символов.
Подскажите, пожалуйста, как быть в такой ситуации! Сделать, чтобы любые строки записывались (и считывались) в базу нормально, без искажений.