问题描述:
1、开发环境:本地:XP+oracle9i+vs.net2003;数据存放在远程数据库oracle9i中编码字符集为American_America.US7ASCII
2、代码:
string cnString = ConfigurationSettings.AppSettings["ConnectionString"];
OracleConnection cn = new OracleConnection(cnString);
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = "GET_SE";
cmd.CommandType = CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter(cmd);
OracleDataAdapter da = new OracleDataAdapter("select se,mc from zsxx",cn);
DataSet ds = new DataSet();
da.Fill(ds,"SE");
DataGrid1.DataSource = ds.Tables["SE"].DefaultView;
DataGrid1.DataBind();
3、说明:字段se为NUMBER型,mc为nvarchar2,且mc为中文数据,就是这中文无法正常显示。
不能更改数据库,因为是远程数据库,只给查询权限!
4、试过的方法:
(1)修改过web.config文件<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
(2)另存为过显示页,并更改其保存编码。
查了很久也没能解决,希望达人帮助,分随你要,当然尽我所有了。国
(3)byte[] arr=System.Text.Encoding.UTF7.GetBytes(str); 前三个贴:2006-11-2 17:22:49 http://community.csdn.net/Expert/topic/5128/5128785.xml?temp=.181637
2006-11-1 17:20:17 的贴:http://community.csdn.net/Expert/topic/5122/5122582.xml?temp=.7934992
2006-10-31 15:56:32 的贴http://community.csdn.net/Expert/topic/5125/5125835.xml?temp=.6941645
1、开发环境:本地:XP+oracle9i+vs.net2003;数据存放在远程数据库oracle9i中编码字符集为American_America.US7ASCII
2、代码:
string cnString = ConfigurationSettings.AppSettings["ConnectionString"];
OracleConnection cn = new OracleConnection(cnString);
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandText = "GET_SE";
cmd.CommandType = CommandType.StoredProcedure;
OracleDataAdapter da = new OracleDataAdapter(cmd);
OracleDataAdapter da = new OracleDataAdapter("select se,mc from zsxx",cn);
DataSet ds = new DataSet();
da.Fill(ds,"SE");
DataGrid1.DataSource = ds.Tables["SE"].DefaultView;
DataGrid1.DataBind();
3、说明:字段se为NUMBER型,mc为nvarchar2,且mc为中文数据,就是这中文无法正常显示。
不能更改数据库,因为是远程数据库,只给查询权限!
4、试过的方法:
(1)修改过web.config文件<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>
(2)另存为过显示页,并更改其保存编码。
查了很久也没能解决,希望达人帮助,分随你要,当然尽我所有了。国
(3)byte[] arr=System.Text.Encoding.UTF7.GetBytes(str); 前三个贴:2006-11-2 17:22:49 http://community.csdn.net/Expert/topic/5128/5128785.xml?temp=.181637
2006-11-1 17:20:17 的贴:http://community.csdn.net/Expert/topic/5122/5122582.xml?temp=.7934992
2006-10-31 15:56:32 的贴http://community.csdn.net/Expert/topic/5125/5125835.xml?temp=.6941645
2 程序中使用的字符集保持和数据库字符集一致;
select * from sys.v_$nls_parameters
看返回的数据,
如果“http://community.csdn.net/Expert/topic/5125/5125835.xml?temp=.6941645”是从程序中返回的,就有问题了!!!
可以看看客户端注册表是(NLS_LANG )什么,对应home下面(一般为home0)
要不就看oracle连接对象中有没有语言环境的参数,或者执行类似alter session的设置命令
nvchar2主要受“NLS_NCHAR_CHARACTERSET”影响
不能直接表达汉字
需要转换,类似encode/decode , escape/unescape