千家信息网

怎么处理数据库中文字符集乱码

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容主要讲解"怎么处理数据库中文字符集乱码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么处理数据库中文字符集乱码"吧!一、问题描述同事说测试库中文
千家信息网最后更新 2024年09月22日怎么处理数据库中文字符集乱码

本篇内容主要讲解"怎么处理数据库中文字符集乱码",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么处理数据库中文字符集乱码"吧!

一、问题描述

同事说测试库中文字符集乱码,需要处理。

二、分析处理

影响oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

NLS_LANG = language_territory.charset

它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

Language 指定服务器消息的语言

territory 指定服务器的日期和数字格式

charset 指定字符集。

如:AMERICAN _ AMERICA. ZHS16GBK

SQL> select userenv('language') from dual;USERENV('LANGUAGE')----------------------------------------------------AMERICAN_AMERICA.WE8MSWIN1252

在网络上查询资料后: 参考:https://blog.csdn.net/DBDoctor/article/details/51909047

将数据库置于restricted mode下,是为了防止数据库有新的非dba权限的连接

SQL> alter system enable restricted session;System altered.

修改字符集到ZHS16GBK

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1: ORA-12712: new character set must be a superset of old character set

提示:新字符集必须为旧字符集的超集,这时可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; ALTER DATABASE character set INTERNAL_USE ZHS16GBKERROR at line 1:ORA-12721: operation cannot execute when other sessions are active

当前有连接处于active状态,kill掉session或者重启数据库。

SQL> shutdown immediate;SQL> startup mount;SQL> alter system enable restricted session;System altered.SQL> alter database open;Database altered.SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; Database altered.SQL> alter system disable restricted session;System altered.SQL> select userenv('language') from dual;USERENV('LANGUAGE')----------------------------------------------------AMERICAN_AMERICA.ZHS16GBK

到此,相信大家对"怎么处理数据库中文字符集乱码"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0