zoukankan      html  css  js  c++  java
  • 字符集例子-同一字符不同字符集编码不同及导入导出的乱码

    1.演示相同的字符,在不同的字符集下,对应的编码不同的例子。

    会话1:使用ZHS16GBK字符集
    [oracle@bys001 ~]$ export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
    [oracle@bys001 ~]$ echo $NLS_LANG                      
    AMERICAN_AMERICA.ZHS16GBK
    [oracle@bys001 ~]$ sqlplus bys/bys
    BYS@bys1>insert into test values(1,'白');
    1 row created.
    BYS@bys1>commit;
    Commit complete.
    BYS@bys1>select * from test;
            ID NAME
    ---------- --------------------
             1 白
    会话2:会话2的如果使用ZHS32GB18030、ZHS16CGB231280字符集插入后编码和ZHS16GBK字符集的相同。
    这里使用US7ASCII来测试。

    [oracle@bys001 ~]$ export NLS_LANG=AMERICAN_AMERICA.US7ASCII
    [oracle@bys001 ~]$ echo $NLS_LANG                      
    AMERICAN_AMERICA.US7ASCII
    [oracle@bys001 ~]$ sqlplus bys/bys
    BYS@bys1>insert into test values(2,'白');
    1 row created.
    BYS@bys1>commit;
    Commit complete.
    在会话2查询:已经显示为乱码了。
    BYS@bys1>select * from test;
            ID NAME
    ---------- ----------
             1 ?
             2 ??

    在会话1查询:会话2插入的汉字成了乱码,因为会话2是US7ASCII,
    BYS@bys1>select * from test;

            ID NAME
    ---------- --------------------
             1 白
             2 ??

    查询字符编码,第一次插入和第二次的不同:
    BYS@bys1>col aa for a60
    BYS@bys1>select id,dump(name,1016) as aa from test;

            ID AA
    ---------- ------------------------------------------------------------
             1 Typ=1 Len=3 CharacterSet=AL32UTF8: e7,99,bd
             2 Typ=1 Len=6 CharacterSet=AL32UTF8: ef,bf,bd,ef,bf,bd
    ######################################################################

    3.将客户端设置为不同的字符集,演示导入/导出可能产生的乱码问题。

    方法一:使用ZHS16GBK字符集,可以正常导出导入,此过程不产生乱码。
    [oracle@bys001 ~]$ echo $NLS_LANG                                
    AMERICAN_AMERICA.ZHS16GBK
    [oracle@bys001 ~]$ sqlplus bys/bys

    BYS@bys1>select * from test;
            ID NAME
    ---------- --------------------
             1 白
             2 ??
    BYS@bys1>
    BYS@bys1>exit
    [oracle@bys001 ~]$ echo $NLS_LANG                                
    AMERICAN_AMERICA.ZHS16GBK
    [oracle@bys001 ~]$ exp bys/bys file='/home/oracle/test.dmp' tables=test rows=y
    Export: Release 11.2.0.1.0 - Production on Sun Aug 11 00:49:34 2013
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Export done in ZHS16GBK character set and UTF8 NCHAR character set
    server uses AL32UTF8 character set (possible charset conversion)

    About to export specified tables via Conventional Path ...
    . . exporting table                           TEST          2 rows exported
    Export terminated successfully without warnings.
    [oracle@bys001 ~]$ sqlplus bys/bys

    BYS@bys1>select * from test;

            ID NAME
    ---------- --------------------
             1 白
             2 ??
    BYS@bys1>truncate table test;

    Table truncated.
    BYS@bys1>exit

    [oracle@bys001 ~]$ imp bys/bys file='/home/oracle/test.dmp' full=y ignore=y

    Import: Release 11.2.0.1.0 - Production on Sun Aug 11 00:50:22 2013

    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    Export file created by EXPORT:V11.02.00 via conventional path
    import done in ZHS16GBK character set and UTF8 NCHAR character set
    import server uses AL32UTF8 character set (possible charset conversion)
    . importing BYS's objects into BYS
    . importing BYS's objects into BYS
    . . importing table                         "TEST"          2 rows imported
    Import terminated successfully without warnings.
    [oracle@bys001 ~]$ sqlplus bys/bys

    BYS@bys1>select * from test;

            ID NAME
    ---------- --------------------
             1 白
             2 ??

    方法二:
    [oracle@bys001 ~]$ export NLS_LANG=AMERICAN_AMERICA.US7ASCII
    [oracle@bys001 ~]$ echo $NLS_LANG
    AMERICAN_AMERICA.US7ASCII
    [oracle@bys001 ~]$ rm -rf test.dmp
    [oracle@bys001 ~]$ exp bys/bys file='/home/oracle/test.dmp' tables=test rows=y
    Export: Release 11.2.0.1.0 - Production on Sun Aug 11 00:58:27 2013
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    Export done in US7ASCII character set and UTF8 NCHAR character set
    server uses AL32UTF8 character set (possible charset conversion)

    About to export specified tables via Conventional Path ...
    . . exporting table                           TEST          2 rows exported
    Export terminated successfully without warnings.
    [oracle@bys001 ~]$ imp bys/bys file='/home/oracle/test.dmp' full=y ignore=y

    Import: Release 11.2.0.1.0 - Production on Sun Aug 11 01:00:36 2013

    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


    Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options

    Export file created by EXPORT:V11.02.00 via conventional path
    import done in US7ASCII character set and UTF8 NCHAR character set
    import server uses AL32UTF8 character set (possible charset conversion)
    . importing BYS's objects into BYS
    . importing BYS's objects into BYS
    . . importing table                         "TEST"          2 rows imported
    Import terminated successfully without warnings.

    [oracle@bys001 ~]$ sqlplus bys/bys
    BYS@bys1>select * from test;

            ID NAME
    ---------- ----------
             1 ?
             2 ??


  • 相关阅读:
    spring注解之@PostConstruct在项目启动时执行指定方法
    maven profile动态选择配置文件
    使用Java High Level REST Client操作elasticsearch
    ElasticSearch的基本原理与用法
    Spring Boot中使用Swagger2自动构建API文档
    Spring Aop——给Advice传递参数
    一次EF批量插入多表数据的性能优化经历
    [翻译]:SQL死锁-死锁排除
    项目中死锁的解决经历
    [翻译]:SQL死锁-为什么会出现死锁
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3362185.html
Copyright © 2011-2022 走看看