我不使用DBD :: Sybase,但a)我使用了很多其他DBD和b)我目前正在收集有關DBD中unicode支持的信息。根據該窗格,使用syb_enable_utf8時至少需要OpenClient 15.x。你使用15.x或更高版本?如果您的客戶端小於15.x,或者您的DBD :: Sybase版本太舊,也許syb_enable_utf8未定義。不幸的是,當添加了syb_enable_utf8時,我無法從Changes文件中看到。
但是,當您說「找不到方法」時,我認爲這是一個線索,因爲syb_enable_utf8不是方法,它是pod中的一個屬性(它位於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中正確的unicode字符,將會返回垃圾。
Raze2dust所做的評論與您的問題無關,但值得注意的是,如果您要將從您的數據庫檢索到的數據寫入其他地方,請注意。只要記住解碼輸入到腳本的任何數據並對任何數據輸出進行編碼。
確保您已閱讀此內容:http://perldoc.perl.org/perlunicode.html –