向Oracle数据库插入中文乱码解决方法

时间:2022-04-03 06:52:44

解决方法:
    第一步:sqlplus下执行:select userenv('language') from dual;//查看oracle字符集
     注:如果oracle字符集与后台代码设置的字符集不一致就会出现乱码
    第二步:修改SYS.PROPS$表。即用SYS用户登陆ORACLE后,利用下面语句修改相应的字符集并提交:SQL>UPDATE PROPS$ SET VALUE$=’ZHS16GBK‘WHERE NAME=’NLS_CHARACTERSET’;SQL>COMMIT;

    通过此种方法来更改数据库字符集,只对更改后的数据有效,即数据库中原来的数据仍以原字符集被存储。
   注:使用sys登陆的密码是manager   连接方式为 sysdba

   注:查询数据库字符集(oracle server 端 字符集查询):oracle: select userenv(’language’) from dual;  --查询的是Oracle服务器端字符集

原文链接---------http://wenda.so.com/q/1408152629727270?src=110

 

数据库字符集修改案例:

Microsoft Windows [版本 10.0.14393]
(c) 2016 Microsoft Corporation。保留所有权利。

C:\WINDOWS\system32>sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on 星期一 12月 19 09:29:31 2016

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


SQL> conn /as sysdba
已连接。
SQL> select * from nls_database_parameters where parameter ='NLS_CHARACTERSET';

PARAMETER
------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8


SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area 3390558208 bytes
Fixed Size                  2180464 bytes
Variable Size            2013268624 bytes
Database Buffers         1358954496 bytes
Redo Buffers               16154624 bytes
数据库装载完毕。
SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

系统已更改。

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

系统已更改。

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

系统已更改。

SQL> alter database open;

数据库已更改。

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
ALTER DATABASE CHARACTER SET ZHS16GBK
*
第 1 行出现错误:
ORA-12712: 新字符集必须为旧字符集的超集


SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

数据库已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 3390558208 bytes
Fixed Size                  2180464 bytes
Variable Size            2013268624 bytes
Database Buffers         1358954496 bytes
Redo Buffers               16154624 bytes
数据库装载完毕。
数据库已经打开。
SQL>