免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2098 | 回复: 2
打印 上一主题 下一主题

如何向数据库中插入Unicode字符? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-09 13:11 |只看该作者 |倒序浏览
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字符?

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

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-05-09 14:46 |只看该作者
数据库中读出来的时候..要用转码.成client 程序看得懂得编码...

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

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

论坛徽章:
0
3 [报告]
发表于 2008-05-09 15:06 |只看该作者
谢谢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.

[ 本帖最后由 isnoopy 于 2008-5-9 15:07 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP