码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2016-09-08 20:07:29      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

背景

开发语言: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数据库中中英文字符集问题

标签:

原文地址:http://www.cnblogs.com/mengzhixingping/p/5854072.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!