一直知道oracle有字符集的问题,但以前安装oralce基本都直接选择了gbk的字符集,所以没碰到过问题,直到这次遇到一个客户坚持要求使用us7ascii的字符集,才被折腾了一番。
基本环境如下:
数据库服务器:windows 2003 sp2中文版 + oracle 10g (us7ascii)
应用服务器:iis7 + .net 3.5
问题如下:
1。无法正常存取中文,数据库字段设置为nvarchar也不行。
解决方法:采用指定参数类型的方式可解决(前提:数据库和客户端的字符集必须一直,客户端操作系统可不同)
OracleConnection con = new OracleConnection(conString);
con.Open();
OracleCommand cmd = con.CreateCommand();
cmd.CommandText = "insert into test values(6,:vc,:nvc)";
OracleParameter p1 = new OracleParameter("vc", OracleType.VarChar);
OracleParameter p2 = new OracleParameter("nvc", OracleType.NVarChar);
p1.Value = "中";
p2.Value = "中";
cmd