👨 作者简介:大家好,我是Taro,全栈领域创作者
✒️ 个人主页:唐璜Taro
🚀 支持我:点赞👍+📝 评论 + ⭐️收藏
文章目录
- 前言
- 一、解决方法
- 二、安装System.Data.OleDb连接库
- 三、本地安装ODAC组件驱动
- 四、编辑系统环境变量
- 五、调试程序
- 总结
前言
最近对接医院HIS系统,要跟对方数据库进行对接,结果发现医院采用的是oracle的AMERICAN_AMERICA.US7ASCII的编码格式编码,导致读取到程序的中文数据都是乱码
以下是本篇文章正文内容,下面案例可供参考
一、解决方法
因为院方单位数据编码不能改变,所以测试了很多办法,最终选择一个较为高效的处理方法(ODAC +OleDbConnection)采用独立的oracle驱动去处理
二、安装System.Data.OleDb连接库
-
Oracle.ManagedDataAccess.Client 是c# 连接Oracle数据库使用量最大包, 也是Oracle 官方提供的 .NET 数据访问库,但是无法解决乱码问题
-
必须采用System.Data.OleDb ,它是采用独立的oracle驱动去处理,这是解决中文乱码的关键
System.Data.OleDb 依赖项:
核心代码:
- 连接数据库字符串:
<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数据库的中文乱码问题