做软件的朋友,在做国际化程序时大多会遇到oracle数据库乱码的问题,究其原因都是字符集惹的祸。(比方说数据库服务器在韩国,其字符集为KO16KSC5601,而我们本地的为ZHS16GBK,像这样的情况下,我们去访问韩国数据库服务器时都会出现乱码的问题)
为了实现数据的正常显示,可按照如下步骤进行修改。
1:首先,安装oracle 的client或server端(选择的字符集为标准UTF-8)
2:修改注册表里oracle项 HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/KEY_OraDb10g_home1
将NLS_LANG的键值 SIMPLIFIED CHINESE_CHINA.ZHS16GBK改为 KOREAN_KOREA.KO16KSC5601(american_america.US7ASCII)
并在KEY_OraDb10g_home1下增加类型为字符串的 ORA_NLS_CHARACTERSET_CONVERSION 项,其键值为NO_CHARACTER_SET_CONVERSION
3:修改tnsnames.ora文件,tnsnames.ora文件为oracle建立数据连接的文件, 具体目录为D:/oracle/product/10.1.0/db_1/NETWORK/ADMIM 下(如果是oracle9i的话,tnsnames.ora文件的位置会有有所变化),在tnsnames.ora添加如下
代码
TEST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 端口号))
)
(CONNECT_DATA =
(SERVICE_NAME = TEST )
)
)
TEST 为oracle数据库名
4:配置完成后,在cmd下 输入命令 tnsping TEST
输出如下信息
TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 - Production on 22-11月-2007 08:31:23
Copyright (c) 1997, 2003, Oracle. All rights reserved.
已使用的参数文件:
d:/oracle/product/10.1.0/db_1/network/admin/sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 1525))) (CONNECT_DATA = (SERVICE_NAME = TEST )))
OK (660 毫秒)
则表示成功