FYI
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的字符集,如WE8ISO8859P1或US7ASCII,而这两个字符集都没有汉字编码,虽然有些时候选用这种字符集好象也能正常使用,但用这种字符集存储汉字信息从原则上说就是错误的,它会给数据库的使用与维护带来一系列的麻烦。正常情况下,要将汉字存入数据库,数据库字符集必须支持中文,而将数据库字符集设置为US7ASCII等单字节字符集是不合适的。US7ASCII字符集只定义了128个符号,并不支持汉字。另外,如果在SQL*PLUS中能够输入中文,操作系统缺省应该是支持中文的,但如果在NLS_LANG中的字符集设置为US7ASCII,显然也是不正确的,它没有反映客户端的实际情况。但在实际应用中汉字显示却是正确的,这主要是因为Oracle检查数据库与客户端的字符集设置是同样的,那么数据在客户与数据库之间的存取过程中将不发生任何转换,但是这实际上导致了数据库标识的字符集与实际存入的内容是不相符的。而在SELECT的过程中,Oracle同样检查发现数据库与客户端的字符集设置是相同的,所以它也将存入的内容原封不动地传送到客户端,而客户端操作系统识别出这是汉字编码所以能够正确显示。
在这个例子中,数据库与客户端都没有设置成中文字符集,但却能正常显示中文,从应用的角度看好象没问题。然而这里面却存在着极大的隐患,比如在应用length或substr等字符串函数时,就可能得到意外的结果。
对于早期使用US7ASCII字符集数据库的数据迁移到oracle8i/9i中(使用zhs16gbk),由于原始数据已经按照US7ASCII格式存储,对于这种情况,可以通过使用Oracle8i的导出工具,设置导出字符集为US7ASCII,导出后使用UltraEdit等工具打开dmp文件,修改第二、三字符,修改 0001 为0354,这样就可以将US7ASCII字符集的数据正确导入到ZHS16GBK的数据库中。
 
总结一下在 .Net 中读写Oracle数据库常用两种方式:OracleClient和OleDb,其中OleDb的方式根据驱动程序的不同又有两种。

  1. OracleClient方式,是微软专门针对Oracle数据库开发的,仅在 .NET Framework 1.1 版中受支持。据说速度快、性能好,是推荐使用的方式。但根据我的经验,当Oracle数据库服务器端采用英文字符集比如 US7ASCII 时,客户端不管字符集如何设置,读出的中文都是乱码;若服务器端用中文字符集比如 ZHS16GBK ,则无乱码问题。
  引用类库:System.Data.OracleClient.dll。 
  命名空间:System.Data.OracleClient。
  常用类:OracleConnection、OracleCommand、OracleDataAdapter、OracleTransaction、OracleDataReader等。
  典型连接字符串:“data source=oratest;user id=scott;password=tiger”(注意:可不指定 provider 驱动)。

  2. OleDb方式,微软和Oracle公司各自提供了OleDb的驱动程序,使用方法的差别很少。不管Oracle服务器端用何字符集,读写中文均无乱码问题。
  相同之处
  命名空间:System.Data.OleDb。
  常用类:OleDbConnection、OleDbCommand、OleDbDataAdapter、OleDbTransaction、OleDbDataReader等。
  不同之处
  引用类库:微软的只需要System.Data.dll;若用Oracle的驱动,虽然也只要引入System.Data.dll,但前提是首先安装Oracle针对.Net的数据访问组件。
  连接字符串:与OracleClient方式相比,要添加一个provider,微软为“provider=MSDAORA.1;”,Oracle为“provider='OraOleDb.Oracle';”。
set conn=server.createobject("adodb.connection")

注意下面一行:在web.config中加入即可,只需更改数据库连接参数,还要安装ORACLE客户端,我已测试过,可以正常显示汉字
  dns="Provider=MSDAORA.1;Persist Security Info=True;User ID=user1;Password=pass1;Data Source=oradb"

转载于:https://www.cnblogs.com/bdzwater/p/3450299.html

.net 连接ORACLE中文显示乱码解决方案相关推荐

  1. QT + MinGW 中文显示乱码解决方案

    QT + MinGW 中文显示乱码解决方案 1.将cpp文件从使用UTF-8改为使用UTF-8-BOM编码方式,中文就可以显示了! 2.代码如下: DialogInput Input(QString: ...

  2. PL/SQL 中文显示乱码解决方案

    为什么80%的码农都做不了架构师?>>>    PL/SQL 中文显示乱码: 1.修改注册表进行设置: HKEY_LOCAL_MACHINE->SOFTWARE->ORA ...

  3. win7英文版很多软件中文显示乱码解决方案

    在win7英文版下,很多软件中文字体均显示问号,通过如下解决方案,经测试,可以完美解决: 一.通过控制面板->时钟.语言和区域,打开区域和语言面板: 二.修改如下配置: 1.区域和语言-> ...

  4. iterm2连接Mac中文显示乱码

    首先判断iterm2的编码方式 Preferences -> Profiles -> Terminal 查看iterm2的编码方式,如果不是UTF-8,则改为UTF-8. 如果还是乱码,那 ...

  5. 解决SSH连接linux中文显示乱码问题

    添加windows下mysql服务 以管理员身份打开cmd,执行 mysqld –install net stop mysql 忘记密码找回 找到mysql数据库中的my.ini配置文件,登录跳过密码 ...

  6. 修改oracle客户端的编码,Oracle中文字符乱码?设置Oracle客户端字符编码与服务端一致...

    经常可能出现查询Oracle数据时,中文显示乱码,这很可能是因为,Oracle服务端的字符编码与客户端不一致引起的. 这时,我们需要做的是,如何设置自己的客户端字符编码与服务端一致. 查询Oracle ...

  7. linux文件乱码crt,Linux中文文件显示乱码或Secure CRT显示乱码解决方案

    Linux中文文件显示乱码或Secure CRT显示乱码解决方案 1.设置Secure CRT options->session options->appearance->fond( ...

  8. PLSQL中文显示乱码,真正有效的解决方案(无需修改注册表 )

    PLSQL中文显示乱码,可能是oracle客户端和服务器端的编码方式不一样.网上有很多帖子介绍解决方法,但都说得不清不楚的,这里我将自己经过实践和理解的真正的解决方案分享给大家. 在这里,我们使用的是 ...

  9. Win7安装软件,界面上中文显示乱码的解决方案

    Win7安装软件,界面上中文显示乱码的解决方案 参考文章: (1)Win7安装软件,界面上中文显示乱码的解决方案 (2)https://www.cnblogs.com/heyang78/p/42588 ...

最新文章

  1. 【博士论文】分形计算系统
  2. 玩转oracle 11g(17):命令学习5
  3. 函数节流(throttle)与函数去抖(debounce)
  4. 如何用div装html,​div标签如何使用的
  5. mvc5 新手入门--ASP.NET MVC5中View-Controller间数据的传递
  6. 汉字乱码的终极解决方案
  7. WEB表单设计学习心得
  8. 室内导航怎么实现?怎么做到零成本实现室内导航?
  9. a标签下载静态文件 失败-未发现文件
  10. 【老生谈算法】matlab实现RLS算法自适应均衡器——RLS算法
  11. casperjs ajax请求,CasperJs中的sendAJAX数据参数
  12. 闲鱼无法确认收货显示服务器繁忙,闲鱼不确认收货怎么办?解决办法都是这样的...
  13. Java 程序员开发常用的工具(全)
  14. 小灰灰的APP学习之路(三)--创建一个简单的问答选择项目
  15. 分支限界算法 之 A*算法(启发式搜索算法)---九宫重排游戏(也称八数码问题)
  16. 新型敏捷硬件设计语言---Chisel初识
  17. 【转】 Windows下复制中文粘贴变成乱码解决办法
  18. nwjs sdk linux x64,【NWjs中文网™】 - nw.js跨平台技术,使用JavaScript,HTML以及CSS搭建跨平台桌面应用...
  19. Java实现HTTPS加密、解密过程
  20. focusky导出html修改,Focusky怎么设置播放时间间隔 Focusky怎么自定义模板以及导出文件...

热门文章

  1. 如何解决电脑无法访问个别网站
  2. HBase在滴滴出行的应用场景和最佳实践
  3. 整存整取的文档设计[by absolutezero]
  4. php函数题,求教:用php函数算题
  5. 【转】Lwip 断连,连接几次后不通及偶尔不通的问题.
  6. bugku-PWN-瑞士军刀解析过程
  7. php json_encode后乱码,PHP中json_encode后中文乱码的解决方案
  8. 新西兰java程序员_在新西兰做程序员是一种什么体验?解析新西兰计算机专业...
  9. 微信小程序实战_商城1
  10. matlab 机械臂动力学