oracle:完整剖析PL/SQL DEVELOPER与SQL PLUS字符集设置
2011-09-02 10:32
525 查看
提要:本文重点剖析PL/SQL
DEVELOPER与SQL PLUS字符集设置问题,对两者的中文数据写入、读取之间整个流程做描述,抛砖引玉。
工作后要保持学习,同时学习内容还是要勤记下来,并期望对新人有所帮助,请看文。
非常感谢三位专家的文章,能扫清各种基本概念及大部分疑惑,建议大家多读读。他们是:
1、http://blog.csdn.net/tianlesoftware/article/details/4915223 oracle
字符集的查看和修改
2、http://space.itpub.net/519536/viewspace-626952 论oracle字符转码过程
3、http://www.itpub.net/838447,1.html 搞懂oracle字符集
本人也是在他们基础上发现了问题并做了补充实验
一、如果您使用PL/SQL DEVELOPER(版本不限)
1、影响PL/SQL DEVELOPER字符集显示的要素
1.1 OS系统当前字符集
936表示操作系统当前字符集为简体中文,同ZHS16GBK.
1.2 ORACLE注册表
该键值默认读取OS系统当前字符集,当然可以修改。
1.3 系统环境变量NLS_LANG
环境变量影响Dos、sql*plus、PL/SQL DEVELOPER等内容
1.4 ORACLE数据库字符设置
该值是在创建数据库时指定的
1.5 PL/SQL DEVELOPER菜单中TOOLS中首选项的'unicode support'
该选项的说明是:
Unicode
enabled.
When selected, Unicode data will be fetched as such from the Oracle Server, and displayed as Unicode text. When disabled, Unicode data from the server will be converted to the character set of the Oracle Client, in accordance with the NLS_LANG key of the Oracle
Home Registry. -----------from pl/sql developer help content
2、实验数据如下三表,黏贴自excel格式
该图说明写入中文时一定要指定环境变量NLS_LANG,只要指定了,输入中文便能正确写入,无其他要求。
该图。。。没总结出规律
该图。。。同没总结出规律
综上要说明的是 unicaode support 影响的是读取数据的显示,造成很大的迷惑,很难发现数据库中存储的正确性。
1、如果数据库中中文存储正确(即按照数据库创建时的字符集存储),则在pl/sql developer上都是正确的,除非没有指定nls_lang并且没开support;
2、输入数据库中中文存储错误(即没有按照数据库创建时字符集正确存储),则在pl/sql developer上会出现迷惑结果,显示是正确的,但也有错误的时候。这一点是pl/sql developer的隐患。
怎么排除隐患
1、写入中文要设置好环境变量NLS_LANG并且和数据库中字符集一致
2、为减少错误发生率可关闭unicode support
二、如果使用sql*plus、DOS
经过测试,和专家们描述一样,操作系统的字符占有很大角色,错误易发现和理解。
还在进一步测试之中,希望有研究透的朋友留言说明pl/sql developer的规律。
/article/8104332.html
DEVELOPER与SQL PLUS字符集设置问题,对两者的中文数据写入、读取之间整个流程做描述,抛砖引玉。
工作后要保持学习,同时学习内容还是要勤记下来,并期望对新人有所帮助,请看文。
非常感谢三位专家的文章,能扫清各种基本概念及大部分疑惑,建议大家多读读。他们是:
1、http://blog.csdn.net/tianlesoftware/article/details/4915223 oracle
字符集的查看和修改
2、http://space.itpub.net/519536/viewspace-626952 论oracle字符转码过程
3、http://www.itpub.net/838447,1.html 搞懂oracle字符集
本人也是在他们基础上发现了问题并做了补充实验
一、如果您使用PL/SQL DEVELOPER(版本不限)
1、影响PL/SQL DEVELOPER字符集显示的要素
1.1 OS系统当前字符集
936表示操作系统当前字符集为简体中文,同ZHS16GBK.
1.2 ORACLE注册表
该键值默认读取OS系统当前字符集,当然可以修改。
1.3 系统环境变量NLS_LANG
环境变量影响Dos、sql*plus、PL/SQL DEVELOPER等内容
1.4 ORACLE数据库字符设置
该值是在创建数据库时指定的
1.5 PL/SQL DEVELOPER菜单中TOOLS中首选项的'unicode support'
该选项的说明是:
Unicode
enabled.
When selected, Unicode data will be fetched as such from the Oracle Server, and displayed as Unicode text. When disabled, Unicode data from the server will be converted to the character set of the Oracle Client, in accordance with the NLS_LANG key of the Oracle
Home Registry. -----------from pl/sql developer help content
2、实验数据如下三表,黏贴自excel格式
该图说明写入中文时一定要指定环境变量NLS_LANG,只要指定了,输入中文便能正确写入,无其他要求。
该图。。。没总结出规律
该图。。。同没总结出规律
综上要说明的是 unicaode support 影响的是读取数据的显示,造成很大的迷惑,很难发现数据库中存储的正确性。
1、如果数据库中中文存储正确(即按照数据库创建时的字符集存储),则在pl/sql developer上都是正确的,除非没有指定nls_lang并且没开support;
2、输入数据库中中文存储错误(即没有按照数据库创建时字符集正确存储),则在pl/sql developer上会出现迷惑结果,显示是正确的,但也有错误的时候。这一点是pl/sql developer的隐患。
怎么排除隐患
1、写入中文要设置好环境变量NLS_LANG并且和数据库中字符集一致
2、为减少错误发生率可关闭unicode support
二、如果使用sql*plus、DOS
经过测试,和专家们描述一样,操作系统的字符占有很大角色,错误易发现和理解。
还在进一步测试之中,希望有研究透的朋友留言说明pl/sql developer的规律。
/article/8104332.html
相关文章推荐
- oracle:完整剖析PL/SQL DEVELOPER与SQL PLUS字符集设置
- oracle:完整剖析PL/SQL DEVELOPER与SQL PLUS字符集设置
- [oracle] 设置PL/SQL Developer 字符集
- Oracle 10g绿色客户端 plus PL/SQL Developer-搭建方便的Oracle客户端使用环境
- oracle xe client 如何设置 tnsnames.ora(解决无法使用pl/sql developer的问题)
- 在PL/SQL Developer里设置Oracle数据库的字段自动递增功能
- 设置PL/SQL Developer 字符集
- pl/sql developer 设置oracle的date类型默认显示样式
- oracle 初体验-pl/sql developer 连接设置
- 一个机器上同时安装有两个版本oracle时的pl/sql developer设置
- 一个机器上同时安装有两个版本oracle时的pl/sql developer的设置
- 在PL/SQL Developer里设置Oracle数据库的字段自动递增功能
- ORACLE pl/sqldeveloper 客户端乱码--修改Oracle客户端字符集
- 设置PL/SQL Developer 字符集
- Oracle/SQLPlus 相关操作(表空间,用户,权限,字符集等设置)
- oracle笔记1--常用设置,连接PL/SQL Developer,常见错误总结
- Oracle杂文:PL/SQL Developer设置中文、日期格式
- 设置PL/SQL Developer 字符集
- PL SQL Developer登陆Oracle提示客户端与数据库字符编码设置不一致
- PL/SQL developer设置字符集