Я не использую DBD :: Sybase, но а) я использую много других DBD и б) в настоящее время я собираю информацию о поддержке юникода в DBD.В соответствии с модулем вам нужен как минимум OpenClient 15.x при использовании syb_enable_utf8.Вы используете 15.x или позже?Возможно, syb_enable_utf8 не определен, если ваш клиент меньше 15.x или у вас слишком старая версия DBD :: Sybase.К сожалению, я не могу видеть из файла Changes, когда был добавлен syb_enable_utf8.
Однако, когда вы говорите «не могу найти метод», я думаю, что это подсказка, поскольку syb_enable_utf8 - это не метод, а атрибут (находится под определенными Атрибутами Sybase) в стручке.Поэтому вам нужно добавить его к вашему соединению или установить его через дескриптор соединения, например:
my $h = DBI->connect("dbi:Sybase:something","user","password", {syb_enable_utf8 => 1});
или
$h->{syb_enable_utf8} = 1;
Вы также должны прочитать биты в модуле, описывающие, чтопроисходит, когда значение syb_enable_utf8 установлено так, как оно указано в документах, которые применяются только к столбцам UNIVARCHAR, UNICHAR и UNITEXT.
Наконец, прежде всего необходимо правильно вставить данные.Я предполагаю, что если он не вставлен из Perl с syb_enable_utf8 и charset = utf8, а ваши данные не являются правильными символами юникода в Perl, то перед вставкой вы получите мусор обратно.
В комментарии Raze2dust ничего не былосправиться с проблемой, но стоит обратить внимание, если вы собираетесь записывать данные, полученные из вашей базы данных в другом месте.Просто не забудьте декодировать любой ввод данных в ваш скрипт и кодировать любой вывод данных.