最近迁移一个.net应用系统从32位Windows2003升级到64位的Windows2008中,发现所有涉及中文的内容插入到Oracle数据库中都变为?,最开始以为是2008系统的字符集与Oracle数据库中得不一致,检查发现NLS_LANG都是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,是一致的。
网上狂找一遍,基本提供的思路都是设置客户端与数据库端字符集一致的方式,问题是我这已经是一致了,问题还是没解决。
几经折腾,无意间设置了数据库连接字符串字符集,问题居然得到解决。具体解决方式如下:
原来数据库字符串为:User Id=XXX;Password=XXX;Data Source=oraXXX;
改成:User Id=XXX;Password=XXX;Data Source=oraXXX;Unicode=True;
在由于客户端操作系统为64位操作系统,所以需在连接字符串中加入Unicode=true设置,问题得到解决。