orace中的中文乱码

在做项目时使用sql developer导入sql脚本,当执行到其中的
insert into T_USER(user_id,user_name,password) values('root','系统管理员','root');时,提示数据超出字段长度,user_name字段我设置为20,可是却提示
       数据长度为24,可是“系统管理员”命名只有5个字符,查看发现是因为乱码后成为8个类中文字符,而utf-8用三个字节表示中文字符,所以就是长度为24.
问题搞清楚了,原来是oracle编码是utf-8导致,所以考虑将编码由utf改成gbk,txt文件采用asc编码(默认按照本地编码)
从网上参考了一些资料,自己实施后发现问题解决了,现将解决过程整理出来,如下:

conn system/system as sysdba;
已连接




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


Total System Global Area  778387456 bytes
Fixed Size                  1374808 bytes
Variable Size             377488808 bytes
Database Buffers          394264576 bytes
Redo Buffers                5259264 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 internal_use zhs16gbk;


数据库已更改。


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


Total System Global Area  778387456 bytes
Fixed Size                  1374808 bytes
Variable Size             377488808 bytes
Database Buffers          394264576 bytes
Redo Buffers                5259264 bytes
数据库装载完毕。
数据库已经打开。
SQL>
---------------------------


查看编码格式:


select userenv('language') from dual;
select * from nls_database_parameters
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值