最近作项目,由于开发人员的疏忽,在创建oracle9i数据库时没有选择字符集,使用过程中,通过sql语句在该数据库中的表空间执行插入操作时,会报错。经排查,是由字符集问题引起,现在将解决方法提供如下:
在linux下若安装oracle没有选择ZHS16GBK,则在处理汉字时会有乱码情况出现。解决方法:
命令行模式下执行sqlplus "/as sysdba",以sysdba身份进入sqlplus,先执行sql语句:select * from sys.props$,查看NLS_CHARACTER的值,若不是"ZHS16GBK",则可运行sql语句:update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET'
命令行模式下执行sqlplus "/as sysdba",以sysdba身份进入sqlplus,先执行sql语句:select * from sys.props$,查看NLS_CHARACTER的值,若不是"ZHS16GBK",则可运行sql语句:update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET'
执行完毕后,停止数据库(sqlplus中使用sysdba登陆,执行shutdown命令),然后启动数据库,启动实例(startup),插入汉字成功。
经测试,该种方式由于修改了字符集的系统设置,毕竟是不妥当的(我们后来发现备份表空间失败问题,疑似由此引起),最好的办法还是重新创建数据库,创建时选择字符集为“ZHS16GBK”
本文介绍了解决Oracle数据库字符集导致的乱码问题的方法。通过调整NLS_CHARACTERSET参数为ZHS16GBK并重启数据库服务,可以临时解决乱码问题。但最佳实践是重新创建并指定正确的字符集。
3464

被折叠的 条评论
为什么被折叠?



