找回密码
 注册
快捷导航
查看: 4885|回复: 0

【请教】ORACLE客户端字符集冲突

[复制链接] |自动提醒
阅读字号:

2284

回帖

98

积分

9060

资产值

至尊会员I Rank: 4Rank: 4Rank: 4Rank: 4

注册时间
2004-3-9
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)
发表于 2012-4-5 09:24:49| 字数 1,014| - 中国–广西–南宁–西乡塘区 电信 | 显示全部楼层 |阅读模式
正在实施一个HRP项目,遇到一个很棘手的技术问题。

我们的软件跟医院的HIS系统使用的都是oracle数据库,服务器是独立的,但是客户端需要安装在一起。

HIS系统使用的oracle客户端是816版本,我们的软件也能支持,可是使用的字符集居然是us7ascii,而我们的系统只能使用ZHS16GBK字符集。


不是很明白,HIS系统数据库也要存储汉字的(比如药品中文名),那为什么可以使用us7ascii字符集?

考虑过在一台PC客户端安装两个oracle数据库客户端的办法,发现行不通;2.然后查询官方资料,ZHS16GBK是us7ascii的超集,数据库支持us7ascii到ZHS16GBK字符集的转换,可是医院HIS系统已经使用了几年,整个数据库有将近100个G,客户端超过两百台,让院方改HIS数据库字符集基本上不可能。


于是又想到这样一个解决办法——强制更改oracle客户端字符集。
原理是,启动医院HIS客户端前,先把oracle客户端字符集强制更改为us7ascii字符集;同样,启动我们的软件前,先强制切换成ZHS16GBK字符集。

为了方便操作,我直接修改了程序快捷方式,比如ACCOUNT.EXE快捷方式,“目标”的内容

原内容为
C:\HRP\ACCOUNT.EXE
修改内容为
%ComSpec% /c start "" "C:\ch_ZHS16GBK.bat" & start "" "C:\HRP\ACCOUNT.EXE"

然后,ch_ZHS16GBK.bat的内容为
@echo off
reg add HKLM\SOFTWARE\ORACLE\HOME0 /v NLS_LANG /d "SIMPLIFIED CHINESE_CHINA.ZHS16GBK" /f
exit


相应的HIS程序客户端桌面快捷方式一样的方式进行处理。


测试的结果是,两个程序都能正常启动,操作、界面显示都正常,并且同时运行也没发现有什么问题。

到这里似乎问题解决了,但是因为涉及正式生产系统,有一个问题还是想弄明白:

1.Oracle客户端与服务器连接的时候,不同的程序连接通道是否是独立的,支持使用不同字符集连接吗?
2.Oracle客户端连接服务器建立通道时,是否先读取一下注册表,判断所使用的字符集,后面注册表项修改也不会影响程序?


哪位Oracle  DX帮分析一下,谢谢了!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-1-19 07:19 , Processed in 0.087365 second(s), 26 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部