C#获取并写入ORACLE数据库中中英文字符集问题

Posted 梦想&现实

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#获取并写入ORACLE数据库中中英文字符集问题相关的知识,希望对你有一定的参考价值。

背景

开发语言:C#

开发工具:VS2010

A方ORACLE数据库:中文字符集

B方ORACLE数据库:英文字符集

传递方式:webservice方式(取数据,并把取出的数据放到DataTable中,循环回写入B方的存储过程中)

问题

     从A方库里获取数据插入到B方库里写的存储过程里,到B方数据库后,汉字都变为乱码(问号较多)

 

解决方法

  方法一:最初从A方库取数据时用ORACLE的转换函数UTL_RAW.CAST_TO_RAW转换下该字段,即select UTL_RAW.CAST_TO_RAW(a) from A

B方库里接收数据的存储过程应该用utl_raw.cast_to_varchar2()函数解析之后插入到B方库里

  结果:B方库未接收到任何数据

 方法一失败原因,经过跟踪方向直接查询select UTL_RAW.CAST_TO_RAW(a) from A在A方库里是显示出二进制码的,但是查询出的数据不能存到DataTable中,到DataTable中就变成了System.Data[],显示是查出的不是字符串造成的,由此想到把转换的数据查询时转换为字符串

 

方法二:

    用ORACLE的字符截取函数来转换为字符串(to_char不可行),语句为:select substr(UTL_RAW.CAST_TO_RAW(a),0,length(UTL_RAW.CAST_TO_RAW(a))) from A;B方库里接收数据时存储过程仍用utl_raw.cast_to_varchar2()函数解析之后插入到B方库里

  结果:汉字在B方库里显示正常

 

以上是关于C#获取并写入ORACLE数据库中中英文字符集问题的主要内容,如果未能解决你的问题,请参考以下文章

C# 关于写入和读取的问题

在 C# 中将字符串转换为 DateTime 并写入 SQL

C# 正则表达式匹配案例 - 拆分字符串并写入文件输出

如何在 oracle 中执行 c# string.split()

C#连接Oracle数据库字符串(引入DLL)

c#读取文本文档实践3-写入到文本本文档