首页  编辑  

在SQL*Plus中insert进的都是中文的,为什么一存入服务器后,再select出的就是???了

Tags: /超级猛料/Database.数据库相关/Oracle/oracle_error/   Date Created:

【点击: 18173 】 阿木伯 著  

在SQL*Plus中insert进的都是中文的,为什么一存入服务器后,再select出的就是???了?

错误现象:

1、有的时候,服务器数据先导出,重装服务器,再导入数据,结果,发生数据查询成???。

2、有时,服务器设置就有问题,字符集设成单字节了。

错误原因:

一般,是因为字符集设置不对照成的。

解决方法:

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

【最后更新: 06/03/2002 10:22:46 】