使用Perl从SQL Server检索数据时如何处理非ASCII字符?

ade*_*825 0 sql-server perl dbi

我有一个在UNIX上运行的Perl脚本,它使用DBI连接到SQL Server数据库并从中检索数据.该脚本如下所示:

$dbh = DBI->connect("dbi:Sybase:server=$connect;charset=UTF-8", $login, $password) or die("Couldn't connect to $connect as $login/$password:
$DBI::errstr");


$sql = "use mydb";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
$sth->finish;


$sql = "MyProc \@DATE='1/1/2008'";
$sth = $dbh->prepare($sql);
$sth->execute or die("execute failed");
while (($body) = $sth->fetchrow()) {
        print "$body\n";
}
$sth->finish;

$dbh->disconnect if $dbh;
Run Code Online (Sandbox Code Playgroud)

body变量从NVARCHAR列中检索数据并包含非ASCII字符.查询运行正常,但print语句吐出????? 当遇到非ASCII字符时.在DBI-> connect中我甚至指定了字符集,但没有运气.

有关如何让它工作的任何想法?

Aln*_*tak 6

你的代码看起来不错.

我没有理由相信你放入数据库并随后检索的内容仍然不是UTF-8编码.

您确认打印数据的终端实际上​​是UTF-8模式吗?