关于字符集的测试报告

nls_lang用于设置客户端的字符集。影响sqlplus界面的语言。

regedit:
hkey_local_machine/software/oracle/home0
nls_lang键值
1、取值为‘US7ASCII'或为空
2、取值为‘simplified chinese_china.ZHS16GBK'

nls_characterset用于设置数据库内部字符集,决定数据记录保存的格式。
1、取值为‘US7ASCII'或为空
2、取值为‘ZHS16GBK'

测试:环境(已有一表为test_char.内含有汉字)
1>客户端,服务器端的字符集为ZHS16GBK:
    .能正确显示test_char.
    .能正确建立含有汉字记录的表。
    .将xiejia.test_char导入到模式test中
        已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

2>客户端为ZHS16GBK, 服务端的内部字符集为US7ASCII
    .无法正常显示test_char
    .在建立含有汉字记录的表后,无法正常显示该内容
    .在执行export过程中。
        已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
        服务器使用 US7ASCII 字符集 (可能的字符集转换)

3>客户端为US7ASCII,服务端的内部字符集为US7ASII
    .能正常显示test_char
    .在建立含有汉字记录的表后,不能正常显示该内容
    .在执行export过程中
        Export done in US7ASCII character set and AL16UTF16 NCHAR character set
     在执行import过程后,无法正常显示导入内容

4>客户端为ZHS16GBK,服务端的内部字符集为US7ASCII
    .不能正常显示test_char
    .在建立含有汉字记录的表后,不能正常显示该内容
    .在执行export过程中
        Export done in US7ASCII character set and AL16UTF16 NCHAR character set
        server uses ZHS16GBK character set (possible charset conversion)

总结:
客户端的设置uls_lang可决定地导出字符集。

在oracle9i数据库,客户端字符集必须与数据库核心字符集类型一致,否则汉字出现乱码

相关表:
v$nls_parameters
nls_database_parameters
props$
  
保留问题:
如果在客户端与服务端字符集同为US7ASCII,建立含汉字字符的表无法正常显示记录?会不会是因US7ASCII不支持汉字?

2004.11.13
今天,发现一个有意思的问题。
.如果客户端nls_lang=' ',则含汉字字符的表无法正常显示。
.如果客户端nls_lang='American_america.US7ASCII,则含汉字字符的表正常显示。

文章摘抄:
US7ASCII是早期的英文字符集,是不支持中文的。但是,有的用户是在Oracle6,Oracle7.0,Oracle7.1时就使用数据库了,当时是没有中文字符集,存储中文也使用了US7ASCII字符集,而ZHS16CGB231280及ZHS16GBK分别是Oracle7.3及Oralce8.0以后才出现的,这样就出现了一个新问题,如果将字符集由US7ASCII转换为ZHS16GBK。字符集是可以转换的,但是,数据已经按US7ASCII格式存储了,原始数据无法转换。显示,对于这种状况,即使使用Oracle8i,Oracle9i数据库,其核心字符集也不能使用ZHS16GBK。否则,不支持Oracle7.0转换的数据,而应该使用的字符集仍然是US7ASCII。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值