这个问题是我刚踏入工作觉得最坑的一个问题,找了很多方法、也问过不少人,但还是没能解决,偶然间返现了新大陆....

具体问题描述是这样的:

我可以读取Oracle数据库中已有的中文内容,并能正确显示(Oracle中的中文通过SQLplus录入),但当我使用C#程序插入中文记录时,发现数据库中显示为乱码,读取出来也为乱码。我试了很多种编码方式,问题都不能解决。

以下是查找相关资料得到的解决办法:

主要问题是: oracle客户端软件的字符编码与服务器端的字符编码不一致造成的。

oracle的字符编码为 ZHS16GBK

C#中Encoding.Default为"GB2312"

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");

需要注意的是: 第二、三种利用函数进行设置环境变量的操作必须在数据库操作的外边才能生效。

发现参加工作之后,自己慢慢的喜欢上了博客园,隔几天就习惯性都进去看一看,看到对自己有帮助的就立马给收藏了,碰到有疑问的也会大胆的提出质疑,这里真的是个好平台,是程序员

的又一个施展空间。在这可以碰到很多的大神、屌丝或牛B的人物,我希望能同大家一起成长!废话不多少,学习的点点滴滴,都值得与大家分享!

原文:http://www.cnblogs.com/hwjy/p/3865702.html

oracle c# 插入中文乱码,C#写入Oracle 中文乱码问题相关推荐

  1. php 写入mysql 乱码,php写入mysql中文乱码的实例解决方法

    php写入mysql中文乱码的实例解决方法 php写入mysql出现中文乱码的解决办法是:在建立数据库连接之后,将该连接的编码方式改为中文. 代码如下: $linkID=@mysql_connect( ...

  2. oracle+循环插入sql,SQL server,Oracle循环插入百万数据

    SQL server,Oracle循环插入百万数据 SQL server,Oracle循环插入百万数据 压测时常需要往数据库插入大量数据,下面是我往两个数据库插入数据时用的脚本 declare @ma ...

  3. java 数据写入txt乱码_java写入文件是乱码

    java写入文件是乱码 我们读取.写入文件流时,经常会遇到乱码的现象,造成乱码的原因当然不可能是一个,这里主要介绍因为文件编码格式而导致的乱码的问题.首先,明确一点,文本文件与二进制文件的概念与差异. ...

  4. oracle如何插入系统时间,如何在Oracle表中插入系统时间

    导读:以下的文章主要是通过实际应用代码的方式来引出向Oracle表中正确插入实际的系统时间的实际操作,希望对大家能够有所帮助. 1.SQL> insert into test values(2, ...

  5. mysql z中文乱码_c#写入Mysql中文显示乱码 解决方法 z

    Linux编程环境 yum -y install gcc gcc-c++ libtool-ltdl libtool-ltdl-devel openssl openssl-devel curl curl ...

  6. oracle批量插入报错,[数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA

    [数据库]Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA 0 2020-08-19 08:00:06 Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-009 ...

  7. mysql 批量数据导入报错_Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA

    Mybatis 批量插入数据 关于Oracle 批量插入报错:ORA-00933: SQL 命令未正确结束 问题:用mybaits 批量插入数据到Oracle 数据库的时候, 报错:ORA-00933 ...

  8. oracle中插入日期型数据,ORACLE插入日期数据

    ORACLE插入日期数据 oracle数据库插入日期型数据 往Oracle数据库中插入日期型数据(to_date的用法) INSERT  INTO  FLOOR  VALUES  ( to_date ...

  9. 成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç',

    成功解决连接SQL输出出现中文乱码问题(10001, 'oracle¿ìËÙÈëÃÅ', 'Íõº£ÁÁ', 'Ë®Àû³ö°æÉç', 目录 解决问题 解决思路 解决方法 解决问题 解决连接SQL出 ...

  10. 使用PLSQL Developer往 Oracle数据库插入中文数据变问号

    使用PLSQL Developer往 Oracle数据库插入中文数据变问号 问题描述 使用PLSQL Developer往 Oracle数据库插入中文数据变问号 问题原因 通过查看我服务器端的编码,使 ...

最新文章

  1. 可以控制到多低(功率)?
  2. java用for循环查询数据_使用for循环结果创建数据框
  3. Spring Boot 日志管理
  4. 工作几年的感想(一)
  5. get和post 两种基本请求方式的区别
  6. linux shell 豆瓣,用Linux shell脚本爬取豆瓣邮箱
  7. 平台层-适配层-核心层|拆分环信ONE SDK架构
  8. ar路由器 pppoe下发ipv6 dns_手机从路由器获取IP、光猫PPPOE拨号过程、IP/VLAN
  9. php-fpm配置文件的优化
  10. 对“被投诉”的最新解读(外四篇)
  11. Excel对比重复项
  12. HTML链接和锚点学习---第四天
  13. MySQL查询某一天数据
  14. word安全模式解除方法
  15. 5G牌照都发完了,那些传说中的5G手机Ready了吗?
  16. 清华领军计划计算机试题,清华大学2017年自主招生领军计划笔试真题
  17. Python3从搜狐国际新闻抓取---完整版
  18. V2X消息之MAP消息解读
  19. 数值分析18 - 通过直接方法得到函数积分近似 数值方法(左、右、中、梯形矩形积分公式、Simpson积分公式)
  20. 大数据发展前沿 期末总结复习

热门文章

  1. 【使用51单片机驱动1.54英寸墨水屏做一个简洁的贪吃蛇游戏】
  2. 使用51单片机驱动航模无刷电机
  3. wincc控件包下载_Simatic HMI WinCC V7.4 SP1 组态软件下载
  4. 超好用的数学教学软件:几何画板Sketchpad for Mac中文版
  5. 钉钉小程序添加vant组件库
  6. Mac安装wget的两种方法
  7. abb机器人伺服电机报闸是什么_ABB机器人伺服电机刹车失灵,抱闸卡死维修
  8. Python爬取网易云音乐评论
  9. 网易云音乐打卡听歌300首源码
  10. Hexo的Next主题详细配置