如何向数据库中插入Unicode字符?

isnoopy
如何向数据库中插入Unicode字符?

use DBI;
#...
#...

$insert_sql = "insert into t_person_infor(person_name, uri_path, person_abs, score) values(?, ?, ?, ?)";
$sth = $dbh->prepare_cached($insert_sql);
#...
#...
if (!$sth->execute("$1", "$2", "$3", 10000)){
          print $sth->errstr, "/n";
          next;
}

数据库这几个字段都是unicode的,$1,$2, $3都是从Unicode文本中读取出来的。经测试将$1,$2, $3打到文本中显示正常,但是插入数据库老是出现乱码。不知道该如何解决呢?如何向数据库中插入Unicode字符?

[[i] 本帖最后由 isnoopy 于 2008-5-9 13:25 编辑 [/i]]

apile
数据库中读出来的时候..要用转码.成client 程序看得懂得编码...

因为你用的Client程序或OS的 LANG, 或DB本身不是utf-8格式的.....

可能不支援unicode..所以把unicode直接用 例如 GB2312显示..所以看到乱码..

isnoopy
谢谢apile的回答,但还是不知道该怎么解决。可能我还没说明白,数据库其中几个字段如下:
person_name        nvarchar(64)
uri_path        nvarchar(512)
person_abs        ntext(16)
score        int(4)
也就是说数据库字段用的应该是UTF-16,我读文本时用的是open(FileInp,"<:encoding(UTF-16)", "$srcfile") or die "can't open $srcfile: $!";
也是用的UTF-16编码,那么怎么会插入时不正确呢?
补充一下, 用的是SQL Server2000.

[[i] 本帖最后由 isnoopy 于 2008-5-9 15:07 编辑 [/i]]