解决C#读取US7ASCII字符集oracle数据库的中文乱码

👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ 个人主页:唐璜Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏



前言

最近对接医院HIS系统,要跟对方数据库进行对接,结果发现医院采用的是oracle的AMERICAN_AMERICA.US7ASCII的编码格式编码,导致读取到程序的中文数据都是乱码

在这里插入图片描述


以下是本篇文章正文内容,下面案例可供参考

一、解决方法

因为院方单位数据编码不能改变,所以测试了很多办法,最终选择一个较为高效的处理方法(ODAC +OleDbConnection)采用独立的oracle驱动去处理

二、安装System.Data.OleDb连接库

  1. Oracle.ManagedDataAccess.Client 是c# 连接Oracle数据库使用量最大包, 也是Oracle 官方提供的 .NET 数据访问库,但是无法解决乱码问题

  2. 必须采用System.Data.OleDb ,它是采用独立的oracle驱动去处理,这是解决中文乱码的关键
    在这里插入图片描述

System.Data.OleDb 依赖项:
在这里插入图片描述

核心代码:

  1. 连接数据库字符串:
<add connectionString="Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User ID=db;Password=db;" name="HIS" />

程序调用:
在这里插入图片描述

三、本地安装ODAC组件驱动

下载ODAC :https://www.oracle.com/database/technologies/dotnet-utilsoft-downloads.html

ODAC 安装完后必须重启电脑
在这里插入图片描述
在这里插入图片描述
一直点击 “下一步”,到安装结束
在这里插入图片描述

请添加图片描述

四、编辑系统环境变量

这一步是本地与客户端数据库字符集保持一直,防止本地查看数据乱码

变量名:NLS_LANG |  变量值:AMERICAN_AMERICA.US7ASCII

代码如下(示例):
在这里插入图片描述

五、调试程序

  • 中文数据部分显示正常,不在显示乱码
    在这里插入图片描述

总结

以上就是今天要讲的内容,由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,本文仅仅简单介绍了System.Data.OleDb库的使用,完美解决US7ASCII字符集oracle数据库的中文乱码问题

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值