C#连接Oracle查询数据乱码问题解决
来源:互联网 发布:vb库存管理系统源码 编辑:程序博客网 时间:2024/04/28 09:28
由于服务端是第三方系统的,数据库竟然是西欧字符集的,
那边开放了一个用户名,用来查询某个表的数据,
这样服务端与客户端的字符集就不一致了,导致中文乱码。
数据库服务器:AMERICAN_AMERICA.WE8ISO8859P1
客户端操作系统是简体中文
1、用在客户端sqlplus直接连接
C:\Users\Administrator>sqlplus scott/tiger@ORCL
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 9月 17 17:24:43 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select name from tab_test where rownum<3;
NAME
-------------------------------------------------------------------------------
?í?eoé
?ó???·
--直接就是中文乱码
2、通过C#程序采用OleDb的方式查询出来也是乱码
Provider=OraOLEDB.Oracle;Password=tiger;Persist Security Info=True;User ID=scott;Data Source=ORCL;
3、在sqlplus连接之前设置当前回话的环境变量
C:\Users\Administrator>set nls_lang=AMERICAN_AMERICA.WE8ISO8859P1
C:\Users\Administrator>sqlplus scott/tiger@ORCL
SQL*Plus: Release 11.2.0.1.0 Production on Wed Sep 17 17:29:32 2014
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
SQL> select name from tab_test where rownum<3;
NAME
--------------------------------------------------
张三
李四
SQL>
4、在程序种设置环境变量
既然通过设置sqlplus 的环境变量能够解决中文乱码,那么设置程序的环境变量呢?
//环境变量 设置System.Environment.SetEnvironmentVariable("nls_lang", "AMERICAN_AMERICA.WE8ISO8859P1");
System.Environment.SetEnvironmentVariable("nls_lang", "SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1", EnvironmentVariableTarget.Process);string sWhere ="select name from tab_test where rownum<3";DataTable dt = OleDbHelper.ExecuteDataTable(txtConStr.Text.Trim(), CommandType.Text, sWhere);
修改注册表:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session\Manager\Environment
添加:nls_lang=AMERICAN_AMERICA.WE8ISO8859P1
也可以在windows环境变量 设置
set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
set nls_lang=AMERICAN_AMERICA.WE8ISO8859P1
- C#连接Oracle查询数据乱码问题解决
- C# 无客户端连接oracle 11g 乱码问题解决
- C#连接Oracle查询更新数据
- 32位连接64位oracle查询数据中文乱码
- C#连接Mysql查询乱码
- C#连接Oracle数据库(直接引用dll使用),查询数据
- informix查询中文数据输出乱码问题解决
- Oracle查询中文数据乱码
- C#连接oracle数据
- c#读写oracle 中文乱码问题解决
- JSP调用Oracle数据乱码问题解决
- Oracle 中文数据导入乱码问题解决
- Oracle数据库数据显示乱码问题解决方法
- C# mysql 连接查询数据
- C#连接oracle的方式以及问题解决.
- python下连接Oracle查询乱码
- PLSQL连接Oracle数据库后,查询出的数据中文乱码
- rails oracle查询中文数据乱码问题
- showModalDialog和Postback
- 解决where in list问题(续)
- 我的编程语言经历
- dataguard之管理物理备库
- 好久没有听到你的消息
- C#连接Oracle查询数据乱码问题解决
- hdu 4779 Tower Defense (思维+组合数学)
- Windows Minifilter驱动 - 加载顺序 (2)
- new和malloc的区别
- 简单的AFNetWorking用法:加载网络图片和请求JSON数据
- 如何修改ios的导航条上面的文字颜色和大小等
- GET方式传递中文参数乱码的问题
- 想法太多是给自己找烦恼
- 保护.net中的dll文件方法(防止破解、反编译dll)