[转]将oracle数据库的编码变成utf-8

Posted jason_zhangz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[转]将oracle数据库的编码变成utf-8相关的知识,希望对你有一定的参考价值。

1、改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表

Start -> Run -> Rededit <-|

Under registry Editor - > HKEY_LOCAL_MACHINE -> SOFTWARE ->Oracle->KEY_XE->RIGHT WINDOW DOUBLE CLICK NLS_LANG -> CHANGE VALUE TO "AMERICAN_AMERICA.UTF8" ->OK ->CLOSE REGISTRY

 

正确设置oracle客户端字符集的方法:

oracle客户端字符集设置需要和服务器端一致,否则会出现乱码问题。

首先连接服务器,查询服务器端设置:

select * from v$nls_parameters;

找到:

NLS_LANGUAGE

NLS_TERRITORY

NLS_CHARACTERSET

环境变量nls_lang便是由这三部分组成

NLS_LANG = language_territory.charset

比如:

NLS_LANG = American_Japan.JA16SJIS

 

2、改服务器端字符集,通过ORACLE的SQL PLUS命令窗口改

在SQL*PLUS 中,以DBA登录

conn 用户名 as sysdba

然后执行以下命令

 

>shutdown immediate; (把database停了)

>startup mount; (把database重开去可更改情況)

>alter system enable restricted session;

>alter system set job_queue_processes=0;

>alter system set aq_tm_processes=0;

>alter database open;

>alter database character set utf8;

OR

>alter database character set internal_use utf8;(这条命令是强制转换编码格式,有可能会导致数据库中的中文变成乱码)

>shutdown immediate;

>startup; (重开正常oracle)

 

ORACLE数据库字符集修改完成!

 

 

 

数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集。

客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter,

 

以上是关于[转]将oracle数据库的编码变成utf-8的主要内容,如果未能解决你的问题,请参考以下文章

在excel导入到数据库的时候 中文出现乱码 怎么转码啊

oracle到mysql中文变成问号,改了字符集还是没用

oracle查看编码以及修改编码(转)

oracle中编写一个方法将查询出的数据十进制转十六进制谢谢大神

oracle怎么把数字和字符串的连接变成字符串

java怎么将二进制转化成字符串