问题描述:
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
去数据库版问吧
而且现在搞SQL SERVER的比较多啦
早试了
改为DataGrid1.DataSource = ds.Tables["SE"];
试试
或
select * from NLS_DATABASE_PARAMETERS
select * from v$nls_parameters;
查询本地字符集结果如下:
1NLS_LANGUAGESIMPLIFIED CHINESE
2NLS_TERRITORYCHINA
3NLS_CURRENCYRMB
4NLS_ISO_CURRENCYCHINA
5NLS_NUMERIC_CHARACTERS.,
6NLS_CALENDARGREGORIAN
7NLS_DATE_FORMATDD-MON-RR
8NLS_DATE_LANGUAGESIMPLIFIED CHINESE
9NLS_CHARACTERSETUS7ASCII
10NLS_SORTBINARY
11NLS_TIME_FORMATHH.MI.SSXFF AM
而是 SIMPLIFIED CHINESE_CHINA.US7ASCII
把 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0(或1)\NLS_LANG 改成它試試
或
select * from NLS_DATABASE_PARAMETERS
查出的是服務器的字符集,所以客戶端也要換成一致的字符集
把 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0(或1)\NLS_LANG 改成它試試
当然也是AMERICAN_AMERICA.US7ASCII
select userenv('language') from dual
可得到完整的服務器字符集
2)转换本地数据库的字符集为远程字符集;
3)通过数据链路把远程数据拿过来;
4)转换本地数据库的字符集为中文字符集;
5)通过SQL语句查询为中文。以上前四步可以在存储过程中解决。附:字符集转换存储过程:CREATE OR REPLACE PROCEDURE P_CHAR AS
/*
Added By xuanxingmin@2006-10-20
把字符转换成ERP字符集——WE8DEC
*/
BEGIN
BEGIN
EXECUTE IMMEDIATE 'CREATE DATABASE CHARACTER SET WE8DEC';
EXCEPTION WHEN OTHERS THEN
NULL;
END;
END P_CHAR_ERP;--------------------------------------------------------------
我努力所以我优秀!!!
--------------------------------------------------------------
這是 ITPUB 中的一個已解決的問題,請參考。他的問題如下:oracle服务器字符集为:Simplified Chinese_China.US7ASCII
jsp页面字符集设置为:charset=UTF-8当从oracle得到字符后,汉字出现乱码。解決方式:
对所有关注这个问题的同志表示感谢!这个问题已经解决了,下面我来说说解决过程:
使用如下函数转换后即可:new String(rs.getString(1).getBytes("8859_1"),"gb2312")。
解决这个问题的关键是理解各种编码方式的区别,因为US7ASCII是单字节编码的,而gb2312是双字节编码,所以页面显示会出现乱码。又因为US7ASCII和ISO8859_1都是单字节编码,虽然系统报不支持US7ASCII但是使用"8859_1"就可以。所以大家以后遇到这样的例子希望能够举一反三。
nnGB的数据
http://www2.ccw.com.cn/tips/9906/062804_04.asp
后来我用两个方法解决了这个问题。一个是 java 自带的BASE64编码可以搞定。还有一格是我写的编码算法。原理是这样的。
放进去时:String->Char->Byte->String. 取出来时:String->char->byte->String.
搞定。
当然中间还有一些比较复杂的处理过程。这个是中心思想。
楼主可以加我的QQ:240300015 MSN:[email protected]
你说的我试过了
对于oracle用American_America.US7ASCII编码
你这招没有用的
我是搞WAP的,以前碰到许多编码问题,都用UTF-8解决了。ORACLE没用过。
那里的Oracle高手很多
中国ORACLE用户讨论组 http://www.oracle.com.cn/
http://www.oracle.com/technology/global/cn/tech/dotnet/index.html
數據庫的字段是否是nvarchar2型。
數據庫的語言。
数据库用的字符集是US7ASCII,接收后如何转换?