会编程的吸血鬼 2013-07-26 06:00 采纳率: 0%
浏览 2687

vs2008做的窗体程序查询oracle数据库数据,中文数据显示乱码

公司的服务器字符集是英文的,然后我在电脑上装了oracle和plsql,修改了oracle下的注册表字符集都为英文的。我在plsql中查询的中文数据都可以正常显示,我在里面添加的中文数据也可以正常显示。但是,我在vs2008中做了一个查询,将查询出来的数据绑定到datagridview控件上,就出现了中文数据显示乱码,还有就是我自己在vs2008中添加新数据,在plsql中看到的数据中中文都显示为???
跪求高手帮帮忙。。。

  • 写回答

2条回答

  • WorldMobile 2015-06-09 06:16
    关注

    参考一下这个

    在客户端正确显示ORACLE数据库汉字信息,首先必须使服务器端的字符集与客户端的字符集一致;其次是加载到ORACLE数据库的数据字符集必须与服务器指定字符集一致。
    如果数据库设置不修改是很难办到的
    http://www.eygle.com/special/NLS_CHARACTER_SET_01.htm
    http://www.eygle.com/special/NLS_CHARACTER_SET_06.htm
    http://www2.ccw.com.cn/tips/9906/062804_04.asp
    追问:
    oracle服务器端的配置我的确不能动,但是我查过了服务器用的字符集是WE8ISO8859P1,只修改我的程序可不可以实现,我再次说明我用sqlplus和pl/sql读取出来的汉字数据都是正确的!
    回答:
    改变连接字符串,用orcale的链接字符串。在web.config里面



    然后用oledb来取得链接
    '''
    ''' ==打开oracle数据库,返回一个OleDb.OleDbConnection==
    '''
    Private Function Orcale() As OleDb.OleDbConnection
    Dim connstr As String
    Dim dbcon As New OleDb.OleDbConnection
    connstr = WebConfigurationManager.ConnectionStrings("orac1").ConnectionString
    With dbcon
    .ConnectionString = connstr
    .Open()
    End With
    Return dbcon
    End Function
    然后取得结果。
    我这是VB.NET的代码,你自己转C#吧。我用这从orcale取得数据不是乱码(我本机装的orcale的客户端组件。orcale版本是9)。
    追问:
    我是用的Winform,做的是应用程序,不是网站,没有web.config这个文件啊!
    回答:
    哦。那你用
    string connstr="Provider=MSDAORA.1;Data Source=数据库;Persist Security Info=False;User ID=用户名;Password=密码;Unicode=True;pooling = true“;
    OleDbConnection dbcon=New OleDbConnection;
    dbcon.ConnectionString =connstr;
    dbcon.Open();
    这样连接看看。其实最主要的就是上面的Unicode=True,这样用unicode返回结果。C#默认也是unicode的,这样应该就不会乱码了。
    具体下面通过oledb返回结果我就不写了。你先试试看。
    追问:
    谢谢,用你的方法问题已经解决了,但是我还是在想如果用oracleclient空间中的oracleconnection、oraclecommand、oracledadaadapter是不是也可以读取出来汉字啊!呵呵,不好意思,还能再说说吗?
    回答:
    其实主要就是那个字符集。不知道你服务器上怎么设置的,如果没设置好像就是unicode字符集
    而你本机用的是简体中文的gb2312,所以读取是乱码。而plsql这些工具会自动根据服务器上的设置来设置本地的显示字符集 所以你看的不是乱码。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置