SQL*Plus字符集问题

本文介绍了在SQL*Plus中插入中文数据后出现乱码的原因及解决方案,包括检查和修改Oracle数据库字符集、操作系统级Oracle汉字显示字符集等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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


 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值