Oracle 字符集实验

NLS配置:

[oracle@node139 ~]$ echo $NLS_LANG

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

 

配置不同的字符集Oracle存储编码

1gbk字符集

[oracle@node139 ~]$ export NLS_LANG=american_america.ZHS16GBK

SQL>sqlplus / as sysdba

SQL>create table characterset_test(id int,code varchar(20),name varchar(200));

SQL>insert into characterset_test values(2,'ZHS16GBK','系统集成中心');

SQL>commit;

SQL> exit

 

 

现在NLS换成其它字符集:

2)utf8字符集

        [oracle@node139 ~]$ export NLS_LANG=american_america.utf8

[oracle@node139 ~]$ sqlplus / as sysdba

        SQL>insert into characterset_test values(1,'utf8','系统集成中心');

SQL>Commit;

  

查看前后两次插入的数据:

col code format a20

col name format a30

select * from characterset_test;  #发生乱码

 

 

查看数据列的字符编码

这个中文字符相同,但存入数据库中的元数据(字符)是不相同的,如下:

select id,code,name,dump(name,1018) from characterset_test;

 

 

总结:NLS_LANG的配置一定和客户端操作系统的字符集一样,这样才能避免字符乱码

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS