文字
分享

【加入收藏】 【访客留言】 【聊天室】 【技术站点导航】 【技术论坛(BBS)】
位置:首页→Oracle错误→

【点击:】 阿木伯 著
在SQL*Plus中insert进的都是中文的,为什么一存入服务器后,再select出的就是???了?

  • 错误现象:
      1、有的时候,服务器数据先导出,重装服务器,再导入数据,结果,发生数据查询成???。
      2、有时,服务器设置就有问题,字符集设成单字节了。
  • 错误原因:
      一般,是因为字符集设置不对照成的。
  • 解决方法:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    1、检查服务器上Oracle数据库的字符集

     

    SQL> conn sys/change_on_install

    连接成功.

     

    SQL> desc props$

     列名                          可空值否   类型

     ------------------------------- -------- ----

     NAME                            NOT NULL VARCHAR2(30)

     VALUE$                                   VARCHAR2(2000)

     COMMENT$                                 VARCHAR2(2000)

     

    SQL> col value$ format a40

    SQL> select name,value$ from props$;

     

    NAME                           VALUE$

    ------------------------------ -------------------------

    DICT.BASE                      2

    NLS_LANGUAGE                   AMERICAN

    NLS_TERRITORY                  AMERICA

    NLS_CURRENCY                   $

    NLS_ISO_CURRENCY               AMERICA

    NLS_NUMERIC_CHARACTERS         .,

    NLS_DATE_FORMAT                DD-MON-YY

    NLS_DATE_LANGUAGE              AMERICAN

    NLS_CHARACTERSET               ZHS16GBK

    NLS_SORT                       BINARY

    NLS_CALENDAR                   GREGORIAN

    NLS_RDBMS_VERSION              7.3.4.0.0

    GLOBAL_DB_NAME                 ORACLE.WORLD

    EXPORT_VIEWS_VERSION           3

     

    查询到14记录.

     

    NLS_CHARACTERSET这个参数应该是ZHS16GBK,如不是,改为它。

     

    SQL*Plus中修改方法:

    SQL> update props$ set value$='新字符集' where name='NLS_CHARACTERSET';

     

    操作系统中修改方法:

    connect internal

    alter database ORCL character set ZHS16GBK;

    alter database ORCL national character set ZHS16GBK;

     

     

    2、检查操作系统级Oracle汉字显示的字符集

     

    运行regedit,定位到:

    HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE

     

    找到以下字符串

    NLS_LANG

     

    检查是否以下内容,如不是,改之

    SIMPLIFIED CHINESE_CHINA.ZHS16GBK

【最后更新: