一、介绍:
1、Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索
数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。
2、如何查询Oracle的字符集
ORACLE有三方面的字符集,一是oracel server端的字符集,二是oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。
2.1--查看当前DOS输出字符集
chcp --查看当前DOS编码集
chcp 代码页 --修改当前DOS编码集
2.2 --查看oracle server端的字符集(这个是最终显示的字符集)
select userenv('language') from dual;
!:由上面可以看到此时的Oracle服务端的编码集为:chinese_china.AL32UTF8;(utf-8)
而我们的DOS的编码集为:GBK Supports Simplified Chinese(支持简体中文的GBK)(活动代码页 936)
发生乱码,且为 “?”。
在这里给出 代码页 对应的编码集
* 437 — The original IBM PC code page
* 932 — Supports Japanese
* 936 — GBK Supports Simplified Chinese
* 949 — Supports Korean
* 950 — Supports Traditional Chinese
* 1200 — UTF-16LE Unicode little-endian
* 1201 — UTF-16BE Unicode big-endian
* 65000 — UTF-7 Unicode
* 65001 — UTF-8 Unicode
* 10000 — Macintosh Roman encoding (followed by several other Mac character sets)
* 10007 — Macintosh Cyrillic encoding
* 10029 — Macintosh Central European encoding
* 20127 — US-ASCII The classic US 7 bit character set with no char larger than 127
* 28591 — ISO-8859-1 (followed by ISO-8859-2 to ISO-8859-15)
2.3 -- 设置Oracle client端的字符集让其与Oracle server端一致
从上面的操作我们可以看到oracle server端的编码集为 utf-8,我们也把 oracle client端设置为utf-8)
进入当前用户下,执行:
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8
或者
set NLS_LANG=american_america.AL32UTF8
此时我们再进入sqlplus看一下中文的显示情况:
从上面可以看出当 oracle server和oracle client均为utf-8,而dos的编码为 gbk,结果显示乱码,且乱码为“涓滆帪”;
这应该是utf-8编码 转到gbk编码是发生的乱码!。
2.4 --将 DOS 编码集设置为 oracle 两端一致的编码集 utf-8,也就是代码页:65001
再次sqlplus,并查询数据,结果如下:
这时发现还是乱码,不急我们要修改窗口属性,改变字体:
在命令行标题栏上点击右键,选择"属性"->"字体",将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口。