日期:2014-05-16  浏览次数:20433 次

让你的PLSQL Developer方便地访问不同字符集的数据库

有时开发人员面对多种字符集的oracle数据库,在用客户端工具访问数据库时,必须事先修改本地的字符集设置,即NLS_LANG参数,才能正常显示表 中的中文.一般来说可以通过修改注册表和环境变量两种方式来改变这种设置.我们还可以把这种参数设置的改变通过批处理程序来实现,这样可以非常方便的切换 访问各种字符集的数据库.
  以修改注册表中的NLS_LANG为例.
  1.导出注册表中的相应键值到一个文件中(ZHS16GBK.reg),删除无用的键值,只留NLS_LANG,如oracle10G的注册表信息如下:
--------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
--------------------------------
2.修改NLS_LANG的值,生成另一个.reg文件,如US7ASCII.reg:
NLS_LANG,如oracle10G的注册表信息如下:
--------------------------------
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.US7ASCII"
--------------------------------
  3.建立两种批处理文件来调用注册表文件和启动ORACLE客户端工具.如(ZHS16GBK.bat/US7ASCII.bat)

[ZHS16GBK.bat文件内容如下]
".\NLS_LANG.ZHS16GBK.reg"
"%ProgramFiles%\plsql developer\plsqldev.exe"

[US7ASCII.bat文件内容如下]
".\NLS_LANG.US7ASCII.reg"
"%ProgramFiles%\plsql developer\plsqldev.exe"
 直接运行(ZHS16GBK.bat/US7ASCII.bat)来打开客户端工具,这样就可以方便地切换访问不同字符集的数据库且能正常显示中文了.

ps: 通过oracle10G里发布的instanceclient也可以通过在批处理脚本中设置NLS_LANG来显示不同字符集的数据库. (http://publishblog.blogchina.com/blog/tb.b?diaryID=3404106 )如下:
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
set TNS_ADMIN=D:\oracle\instantclient_10_2
set ORACLE_HOME=D:\oracle

sqlplus.exe test/test@192.x.x.x:1521/orcl