最近安装个Oracle 10g数据库,dbca建库的时候没选字符集或者选错的情况,导入数据后,中文全部是乱码(搞笑的是,中文乱码 居然全部是个“靠”字),查看网络几篇文章,也做了相应修改(以前按方法修改可以解决的,今天特例!),解决办法如下:SQL> connect / as sysdba; ---dba用户连接数据库 SQL> select name,value$ from props$ where name like '%NLS%';---语句查询当前数据库服务器字符集 NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_LANGUAGE
AMERICAN NLS_TERRITORY
AMERICA NLS_CURRENCY
$
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_ISO_CURRENCY
AMERICA NLS_NUMERIC_CHARACTERS
., NLS_CHARACTERSET ----找到查出来的结果中的该项参数
WE8ISO8859P1
下面是修改过程: SQL> shutdown immediate; ---停止数据库
Database closed.
Database dismounted.
ORACLE instance shut down. SQL> startup mount ---启动数据库到mount状态
ORACLE instance started. Total System Global Area 235999352 bytes
SQL>> alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL>> # 使用INTERNAL_USE可以跳过超集的检查, (ALTER DATABASE character set INTERNAL_USE )
Database>
SQL> shutdown immediate; ---再停止数据库
Database closed.
Database dismounted.
ORACLE instance shut down. ---启动数据库
SQL> STARTUP
ORACLE instance started. Total System Global Area 235999352 bytes
----再次查看当前字符集 SQL> select name,value$ from props$ where name like '%NLS%'; NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_LANGUAGE
SIMPLIFIED CHINESE NLS_TERRITORY
CHINA NLS_CURRENCY
?