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

 开发者博客www.developsearch.com

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

 

1、查看数据库的字符集

 

SQL > select * from V$NLS_PARAMETERS

  parameter value

  NLS_LANGUAGE AMERICAN

  NLS_TERRITORY AMERICA

  …. ….

  NLS_CHARACTERSET WE8ISO8859P1

  NLS_SORT BINARY

  NLS_NCHAR_CHARACTERSET WE8ISO8859P1

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

 

2、可以用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

猜你喜欢

转载自keepwork.iteye.com/blog/1994108
今日推荐