.net下读写字符串乱码的问题
oracle 版本11g
服务器端编码 WE8ISO8859P15
select userenv('language') from dual
查询结果: AMERICAN_AMERICA.WE8ISO8859P15
客户端已设置nls_lang : AMERICAN_AMERICA.WE8ISO8859P15
nls_lang设置为AMERICAN_AMERICA.WE8ISO8859P15起效后 sqlplus和plsql developer能正确识别中文,否则读写皆为乱码
但是.net 不论使用 odp.net还是 微软自带的system.data.oracleclient,中文读写都是乱码
odp.net测试代码贴出来如下
读取
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
var info = OracleGlobalization.GetClientInfo();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "select privilege_value from ui.user_role2 where cilaccount = 'Xudong A HOU' and roleid = 1";
cmd.CommandType = CommandType.Text;
var val = cmd.ExecuteScalar();
conn.Close();
return val.ToString();
}
写入
using (OracleConnection conn = new OracleConnection(connStr))
{
conn.Open();
//var info = conn.GetSessionInfo();
////label1.Text = info.Language;
//var ci = OracleGlobalization.GetClientInfo();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = "update ui.user_role2 set privilege_value = '你好oracle' where cilaccount = 'Xudong A HOU' and roleid = 1";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
conn.Close();
}
代码运行时候的OracleGlobalization中的编码已经为WE8ISO8859P15
请各位大侠们指点