我的环境: 服务器:SERVER 2000, 软件C#2003 WEB设置是( <globalization fileEncoding="gb2312" requestEncoding="gb2312" responseEncoding="gb2312" uiCulture="zh-CN"/>)数据库是ORACLE 字符:al16utf16 注册码:AMERICAN_AMERICA.WE8ISO8859P1我从ORACLE查出资料放在DATAGRID里,就出现乱吗了,显示形式为:
2005070112581707 ±¨?ˉê±??£o2005-07-01 12:58:17 ??±¨£o?ú·é?ì?·???í?·?ú£??òμ?é£?t?éD???3죨1eB50517£?3μ??±???£?±?íμá?ì¨??é?μ????£ ?÷è???á?£ooì1a′ó?ó3??ˉ?£êü?ˉè?£oáú
-----------------------这里汉字是乱吗,数字还是可以正常显示的.
DATAGRID之外的汉字都是正常显示.
2005070112581707 ±¨?ˉê±??£o2005-07-01 12:58:17 ??±¨£o?ú·é?ì?·???í?·?ú£??òμ?é£?t?éD???3죨1eB50517£?3μ??±???£?±?íμá?ì¨??é?μ????£ ?÷è???á?£ooì1a′ó?ó3??ˉ?£êü?ˉè?£oáú
-----------------------这里汉字是乱吗,数字还是可以正常显示的.
DATAGRID之外的汉字都是正常显示.
解决方案 »
- C#获取从IE拖动过来的连接出现乱码 e.Data.GetDataPresent(DataFormats.Html, false))
- 不用timer控件,怎样显示从1到10不断增加的数字
- 关于sql过滤重复记录的问题
- 请问在ListView控件中鼠标点击事件的问题
- 请教各位一个很简单的问题
- 请教关于几个网络方面的几个问题,谢谢!问题太菜了,请别见笑。
- 如何实现开机自动启动一个Windows服务(服务为手动启动),类似于SqlServer服务控制器上的“当启动OS时自动启动服务”?
- 抽象类的问题
- 急!!如何将文件流保存为Excel文件(*.xsl)--解决就立即给分
- C#开发的dll,如何授权
- 关于.NET编辑器的问题(100分)
- 急问,如何在C#(Winform里面得到访问数据的用户的IP)谢谢
AMERICAN_AMERICA.WE8ISO8859P1代表是英文字符集,这个设置是在服务器上还是工作站上,你是否能确定工作站和服务器使用了相同的字符集?
你为什么不用中文字符集?SIMPLIFIED CHINESE_CHINA.ZHS16GBK
strConn = ConfigurationSettings.AppSettings["SP"];
cn= new OracleConnection(strConn);
cmd = new OracleCommand("temp.get",cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection.Open();
OracleCommandBuilder.DeriveParameters(cmd);
cmd.Parameters["in_TiaoJiao"].Value = strCommand.ToString().Trim();
cmd.Connection.Close();
da = new OracleDataAdapter(cmd);
da.Fill(ds,"view_an_qing_xin_xi_father,view_an_jian_lei_bie_tree,zhong_dui");
if(ds.Tables["view_an_qing_xin_xi_father,view_an_jian_lei_bie_tree,zhong_dui"].Rows.Count > 1)
{
dgrdAlarm.DataSource =ds;
dgrdAlarm.SelectedIndex=-1;
dgrdAlarm.CurrentPageIndex=0;
dgrdAlarm.DataBind();
}听说参数加上System.Text.Encoding.Default就可以,但是不知道加在那里
__________________________________鹏
你没有回答我以上的问题,我不好帮你,你首先确定一下是不是数据库的字符集不匹配造成的,你在你的机器上运行ORACEL工具,查询一下表的内容,看看是不是乱码,如果是那是数据库的事,如果不是那是.NET的事,回来在跟你说,你先做一下!!!
AMERICAN_AMERICA.WE8ISO8859P1代表是英文字符集,这个设置是在服务器上还是工作站上,你是否能确定工作站和服务器使用了相同的字符集?
select * from sys.PROPS$ where name ='NLS_CHARACTERSET'察看服务器上的字符集
注册表 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG 察看工作站字符集
如果不一样,应该将工作站的字符集进行修改
除非,你ORACLE中的数据本身就是乱码,数据你是怎么输进去的???使用IMP导进去的吗?
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG 这里的是:AMERICAN_AMERICA.WE8ISO8859P1
里面的资料是之前导入进去的
我们公司这前也碰到乱码。其实最简单(如果允许的话)就是改数据库的字符集。
你在客户端得费多大的劲啦
给你个例子
<%@ Page language="c#" ContentType="text/html" ResponseEncoding="shift_jis" Codebehind="AdminUslist.aspx.cs" AutoEventWireup="false" Inherits="ChuouEdi.AdminUslist" %>
你前面说的话好像是说“是乱码”,这就跟.NET无关,是你数据库的事情。
2、ORACLE9I的客户端字符集设定是在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG下,你可以看看,但应该也是AMERICAN_AMERICA.WE8ISO8859P1。
3、你既然没有工作站,那说明不存在服务器和客户端字符集不匹配的情况
4、你的数据是导入数据库的,你可以试试用INSERT语句往表里插一条带中文的数据,然后看看这条信息是否也是乱码
5、我可以确定那是因为你的dmp文件(导入的数据文件)的字符集和你现在的数据库字符集不匹配,你在使用IMP命令导入时,应该有提示,你没有注意!这样的导入数据无论如何都是乱码!
解决方法:
方法一:
1.你必须知道你在导出DMP文件的数据库的字符集!(肯定不是AMERICAN_AMERICA.WE8ISO8859P1)
2.重新建立数据库,选择定制,注意有选择字符集的选项时,修改字符集的设置和你导出DMP的数据库字符集一致,然后修改注册表信息HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0\NLS_LANG
3.重新导入数据库文件
方法二:
1.使用update语句修改 sys.PROPS$ 的 NLS_CHARACTERSET和NLS_NCHAR_CHARACTERSET两项为你要修改的字符集的.后面的内容(如AMERICAN_AMERICA.WE8ISO8859P1就为WE8ISO8859P1)
2.修改注册表
方法一应该肯定没问题,方法二理论没有问题,但会受到你当初导入DMP文件时是否有其它问题存在(因为方法二不用重新导入DMP)所以没根。
以上所属,是基于你目前在ORACEL工具中使用SQL语句会显示乱码的情况。
不知道你明白吗?反正你说的话,我是不太明白(如:哦,我改了试下啊,发现问题改成那样后,数据库查处来到的都是乱码啊!!~)?
我感觉你不妨试试把字段类型改成nvarchar试试。或者由于上边看见了ISO-8859-1的字,试试吧去出来的字符串从iso-8859-1转成utf-8试试。oracle的配置,我一直是对付着走。所以恐怕帮不上你了。但是这两个办法,你也不妨一试吧,不好使不要怪我。
System.Text.Encoding.Default只在对文件操作时有用,比如你打开文件或将datagrid的数据导出时,应该设置一下。
你的问题应该是在web.config里
前面说的将gb2312改为utf-8,不行吗?
你是否改了全部?
uiCulture="zh-CN"我觉得没用而且会受影响,你可以删掉试试或者改为uiCulture="en-US"
这个看看。
之后还是不行。现在改动的地方好多,但是没有发现一个是正确的。有点头晕了
OleDbCommand cmdSelect;
cmdSelect = new OleDbCommand(strCommand,myConn);
myConn.Open();
OleDbDataReader myReader;
myReader = cmdSelect.ExecuteReader();
this.dgrdAlarm.DataSource = myReader;
this.dgrdAlarm.DataBind();
cmdSelect.Dispose();
myConn.Close();
用这样的查询时没有出现乱码,说明乱码还是 C#的原因。
但是这样查询出来的资料没有换页的接口,所以又是剩下郁闷..................