- UID
- 98431
- 阅读权限
- 20
- 帖子
- 9
- 精华贴数
- 0
- 技术排名
- 70590
- 技术积分
- 22
- 社区排名
- 32901
- 社区积分
- 3
- 注册时间
- 2004-8-2
- 精华贴数
- 0
- 技术积分
- 22
- 社区积分
- 3
- 注册时间
- 2004-8-2
- 论坛徽章:
- 0
|
发表于 2010-6-17 12:57:13
|显示全部楼层
楼主总结得很好,关键是这支NLS_LANG参数,决定了客户端与db之间的转换模式,而数据库通讯字符转换都是在客户端完成的。而db的字符集定义时主要考虑兼容性,而UTF-8可以最大限度支持各种字符,所以Oracle也推荐采用UTF-8模式。
我这里的数据库设置如下,供各位参考:
1、数据库端:
SELECT * from NLS_DATABASE_PARAMETERS;
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET AL32UTF8
2、客户端,例如windows 7(中文版)下面的SQL/PLus,Benthic Golden,PL/SQL developer
设置注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_<oracle_home_name>
下面NS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
查询等各种操作正常
3、数据库端telnet登录后的sqlplus
CentOS 5.5
环境变量设置
export NLS_LANG='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
export LANG=zh_cn.gbk
登录sqlplus执行查询、修改等操作中文正常 |
|