C# Oracle 乱码问题解决方案
2013-03-29 15:12
204 查看
主要原因:
Oracle客户端的字符集与服务器端不匹配,需要更改客户端(instant client)或者服务器端的字符集
在SQL Developer中查询服务器端的字符集:
结果:
因此只要在客户端设置同样的字符集即可。
1. 对于Windows,在用户环境变量中设置NLS_LANG变量即可:
2. 对于Linux,在.bash_profile中设置NLS_LANG变量即可:
----------------------------------------------------------------------------
oracle服务端字符编码为: ZHS16GBK
oracle客户端字符编码为: WE8ISO8859P1
解决办法有三种:
(1)修改客户端注册表: 找到Oracle安装注册项下的NLS_LANG,将其值改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(2)通过调用_putenv函数,在程序中用代码设置:
using System.Runtime.InteropServices;
...
[DllImport("msvcrt.dll")]
private static extern int _putenv(string str);
...
_putenv("NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
//数据库操作
_putenv("NLS_LANG = AMERICAN_AMRICA.WE8ISO8859P1");
(3)通过C#自带的函数设置环境变量
System.Environment.SetEnvironmentVarible("NLS_LANG "," SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
//数据库操作
System.Environment.SetEnvironmentVarible("NLS_LANG ","AMERICAN_AMRICA.WE8ISO8859P1");
需要注意的是: 第二、三种利用函数进行设置环境变量的操作必须在数据库操作的外边才能生效。
Oracle客户端的字符集与服务器端不匹配,需要更改客户端(instant client)或者服务器端的字符集
在SQL Developer中查询服务器端的字符集:
select userenv('language') from dual;
结果:
因此只要在客户端设置同样的字符集即可。
1. 对于Windows,在用户环境变量中设置NLS_LANG变量即可:
2. 对于Linux,在.bash_profile中设置NLS_LANG变量即可:
NLS_LANG = "SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_LANG
----------------------------------------------------------------------------
oracle服务端字符编码为: ZHS16GBK
oracle客户端字符编码为: WE8ISO8859P1
解决办法有三种:
(1)修改客户端注册表: 找到Oracle安装注册项下的NLS_LANG,将其值改为"SIMPLIFIED CHINESE_CHINA.ZHS16GBK
(2)通过调用_putenv函数,在程序中用代码设置:
using System.Runtime.InteropServices;
...
[DllImport("msvcrt.dll")]
private static extern int _putenv(string str);
...
_putenv("NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
//数据库操作
_putenv("NLS_LANG = AMERICAN_AMRICA.WE8ISO8859P1");
(3)通过C#自带的函数设置环境变量
System.Environment.SetEnvironmentVarible("NLS_LANG "," SIMPLIFIED CHINESE_CHINA.ZHS16GBK");
//数据库操作
System.Environment.SetEnvironmentVarible("NLS_LANG ","AMERICAN_AMRICA.WE8ISO8859P1");
需要注意的是: 第二、三种利用函数进行设置环境变量的操作必须在数据库操作的外边才能生效。
相关文章推荐
- C#在64位操作系统上用X86方式连接64位Oracle的问题和解决方案
- THINKPHP 读取oracle乱码问题解决方案
- C#在64位操作系统上连接Oracle的问题和解决方案
- 关于C#,.net 访问oracle中文乱码问题
- java Socket与C#通信中中文乱码问题的解决方案
- C# 使用System.Data.OleDb;避免oracle中文乱码问题
- C#读文件时出现中文乱码问题的解决方案
- 网站开发笔记:PHP oci连接Oracle中文乱码问题解决方案
- C#在64位操作系统上连接Oracle的问题和解决方案
- oracle数据库,关于乱码问题的解决方案
- C# 从剪贴板中读取HTML中的中文字符出现乱码问题的解决方案
- C# Oracle insert 过程中出现中文乱码问题
- C#连接Oracle查询数据乱码问题解决
- C#在64位操作系统上连接Oracle的问题和解决方案(转贴)
- Oracle导入sql文件数据,中文乱码问题解决方案
- java Socket与C#通信中中文乱码问题的解决方案
- 汉字在VB和oracle 以及C#和oracle之间乱码问题
- 关于C#,.net 访问oracle中文乱码问题
- C# 读取oracle 中文乱码的解决方案
- C#连接Oracle中文乱码问题解决方法