怎么处理数据库中文字符集乱码
本篇内容主要讲解“怎么处理数据库中文字符集乱码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么处理数据库中文字符集乱码”吧!
一、问题描述
同事说测试库中文字符集乱码,需要处理。
二、分析处理
影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:
NLS_LANG=language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:
Language 指定服务器消息的语言
territory 指定服务器的日期和数字格式
charset 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
SQL>selectuserenv('language')fromdual;USERENV('LANGUAGE')----------------------------------------------------AMERICAN_AMERICA.WE8MSWIN1252
在网络上查询资料后:参考:https://blog.csdn.net/DBDoctor/article/details/51909047
将数据库置于restricted mode下,是为了防止数据库有新的非dba权限的连接
SQL>altersystemenablerestrictedsession;Systemaltered.
修改字符集到ZHS16GBK
SQL>ALTERDATABASECHARACTERSETZHS16GBK;ALTERDATABASECHARACTERSETZHS16GBKERRORatline1:ORA-12712:newcharactersetmustbeasupersetofoldcharacterset
提示:新字符集必须为旧字符集的超集,这时可以跳过超集的检查做更改:
SQL>ALTERDATABASEcharactersetINTERNAL_USEZHS16GBK;ALTERDATABASEcharactersetINTERNAL_USEZHS16GBKERRORatline1:ORA-12721:operationcannotexecutewhenothersessionsareactive
当前有连接处于active状态,kill掉session或者重启数据库。
SQL>shutdownimmediate;SQL>startupmount;SQL>altersystemenablerestrictedsession;Systemaltered.SQL>alterdatabaseopen;Databasealtered.SQL>ALTERDATABASEcharactersetINTERNAL_USEZHS16GBK;Databasealtered.SQL>altersystemdisablerestrictedsession;Systemaltered.SQL>selectuserenv('language')fromdual;USERENV('LANGUAGE')----------------------------------------------------AMERICAN_AMERICA.ZHS16GBK
到此,相信大家对“怎么处理数据库中文字符集乱码”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。