Oracle--字符集(中文乱码)

 开发者博客www.developsearch.comsql

 

 

建立数据库的时候直接选择正确的字符集(显示汉字的字符集主要有ZHS16CGB231280,US7ASCII,WE8ISO8859P1,ZHS16GBK等)数据库

 

一、查看数据库的字符集oracle

 

SQL > select * from V$NLS_PARAMETERS工具

  parameter valueui

  NLS_LANGUAGE AMERICANspa

  NLS_TERRITORY AMERICAblog

  …. ….ip

  NLS_CHARACTERSET WE8ISO8859P1ci

  NLS_SORT BINARY开发

  NLS_NCHAR_CHARACTERSET WE8ISO8859P1

  ---- 从上述信息看出ORACLE 数据库的字符集为' WE8ISO8859P1'。

 

二、能够用update 命令修改数据库的字符集,可是

   注意:修改字符集可能会对原有数据形成破坏,修改以前必定要先备份数据库.命令以下:

   用户sys 以sysdba的身份登陆oracle. 字串9

 

SQL > update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET'

 

不一样字符集数据库之间的数据导入

  a)从新安装数据库或者是用update命令修改字符集。

  b)强行修改oracle数据库当前字符集。以sysdba的身份登陆oracle

  SQL > create database character set ZHS16GBK (注:这里的字符集为导出数据的字符集)

  * create database character set ZHS16GBK

  ERROR at line 1:

  ORA-01031: insufficient privileges

  不用理会这个错误,用imp 装入数据。数据装完后,重启动oracle 数据,select * from V$NLS_PARAMETERS 此时,你会发现,数据库字符集又回到原来的字符集。

  c)用第三方工具绕开字符集。如powerbuild的pipeline,delphi的datadump,MS access的数据导入导出工具。

  2.客户端修改字符集。

  2.1 sql*net2.0如下版本编辑oracle.ini 文件。

  2.2 sql*net2.0以上版本。在注册表中查找NLS_LANG,修改该字符串的值就能够。

 

开发者博客www.developsearch.com