C#连接Oracle查询数据乱码问题解决
2014-09-17 17:32
597 查看
由于服务端是第三方系统的,数据库竟然是西欧字符集的,
那边开放了一个用户名,用来查询某个表的数据,
这样服务端与客户端的字符集就不一致了,导致中文乱码。
数据库服务器: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 的环境变量能够解决中文乱码,那么设置程序的环境变量呢?
修改注册表:
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
那边开放了一个用户名,用来查询某个表的数据,
这样服务端与客户端的字符集就不一致了,导致中文乱码。
数据库服务器: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
相关文章推荐
- oracle insert中文数据,查询出现乱码问题解决
- C# 无客户端连接oracle 11g 乱码问题解决
- SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
- C#连接Oracle中文乱码问题解决方法
- 用oralce连接.net客户端出现问题:“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,”的解决办法
- vs2005 C#与mySql连接解决中文乱码问题
- c#读写oracle 中文乱码问题解决
- informix查询中文数据输出乱码问题解决
- Orace查询数据出现乱码的问题解决思路
- oracle分页查询数据重复问题的解决
- JSP调用Oracle数据乱码问题解决
- 解决手机数据连接不能查询天气信息的问题
- jsp连接MySQL数据库显示GIS地理数据乱码问题的解决(select AsText(the_geom))
- oracle备份文件恢复到oracle10的数据乱码问题解决方法
- Oracle:sqlplus查询出的中文是乱码问题的解决
- Oracle:sqlplus查询出的中文是乱码问题的解决(转)
- 解决:hibernate查询过多时与数据库连接断开或无法再查询到数据问题。
- oracle 数据导出 备注(comment)乱码问题解决办法
- Oracle插入数据的乱码解决问题。
- (ASP.NET)C#连接Oracle数据库示例(中文乱码问题解决)