oracle客户端配置字符集,oracle客户端字符集设置有趣的测试

oracle客户端字符集设置有趣的测试

本文档由ice.xie整理,转载请说明出处

今天在网上,郑全(oldboy)提出一个问题:在不修改注册表的情况下,如何修改客户端字符集?

事由:一个客户端可能会连到多个数据库,因此有可能遇到多种字符集,比如说简体中文,繁体中文!

众所周知,大家一般使用的改字符集的方法一般都是去注册表修改,类似于这样的键值:

HKEY_LOCAL_MACHINESOFTWAREOracleHOME0下,

如一般的简体中文

nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

思考:如何在windows下不修改注册表,而改变客户端的字符集设置呢?

修改环境变量,那windows不同进程是否类似于unix/linux有不同的环境变量呢?

在孙征宇(wzsh)的提议下,由我进行测试,测试过程如下

1.环境具体情况:

数据库版本:9.2.0.6

服务器端字符集:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

客户端字符集(注册表设置):AMERICAN_AMERICA.US7ASCII

2.设置环境变量

打开一个cmd窗口,以下称为window1

在windows1,输入set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

并测试一下,echo %nls_lang%,检查结果为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

打开另一个cmd窗口,以下称为window2

在windows1,输入set nls_lang=AMERICAN_AMERICA.US7ASCII

并测试一下,echo %nls_lang%,检查结果为AMERICAN_AMERICA.US7ASCII

这时再返回window1,测试echo %nls_lang%,检查结果为SIMPLIFIED CHINESE_CHINA.ZHS16GBK

看到结果,心中有一点窃喜,看来windows在不同的进程中也会有不同的环境变量

3.在sqlplus中测试,两个windows连入同一资料库

在window1

用sqlplus连入测试库,发现抓取含有中文字符的table,结果为正常显示

在window2

用sqlplus连入测试库,发现抓取含有中文字符的table,结果为乱码

4.结果

windows在不同的进程中也会有不同的环境变量,可以通过修改环境变量的方式来修改客户端字符集[@more@]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值