当前位置导航:炫浪网>>网络学院>>编程开发>>Oracle教程

Oracle和Developer/2000字符集的选择和改变


  一、字符集的选择
  在Oracle客户机/服务器应用中,前端开发工具Developer/2000应和Oracle数据库选择相同的字符集,否则Developer/2000不能正确处理汉字,如不能输入汉字、汉字显示乱码等。要正确处理汉字,一般有两种方案可供选择:
  
  方案一:使用US7ASCII字符集。
  
  在创建Oracle数据库时,字符集选择US7ASCII,在安装Developer/2000时,语言选择English,安装完成后,Developer/2000缺省的字符集不是US7ASCII,应将windows目录下的oracle.ini文件中[Oracle]节里的
  
  NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
  
  修改为
  
  NLS_LANG=AMERICAN_AMERICA.US7ASCII
  
  方案二:使用ZHS16CGB231280字符集。
  
  在创建Oracle数据库时,字符集选择ZHS16CGB231280。在安装Developer/2000时,语言相应地选择SimplifiedChinese,其缺省的字符集为ZHS16CGB231280。
  
  如果采用方案一,一个汉字相当于两个字符。例如"一个汉字"的长度是8,substr('一个汉字',1,2)的结果为"一"。如果采用方案二,一个汉字相当于一个字符。例如"一个汉字"的长度是4,substr('1个汉字',1,2)的结果为"一个"。
  
  在客户端,方案一能正常显示库中的汉字,但在录入单个汉字时有时需要加空格,录入词组时有时会显示乱码;方案二能正常处理汉字,包括正确显示和录入汉字。
  
  二、字符集的改变
  1.Oracle数据库字符集的改变
  
  Oracle数据库的字符集是在安装数据库时选定的,一旦数据库创建之后,数据库的字符集是不能改变的,如果要改变数据库的字符集,只有重新创建数据库。如果要在使原数据库中数据保持不变的前提下改变字符集,则可以参考以下方法:
  
  1)关闭Oracle,物理备份Oracle系统。
  
  2)启动Oracle,修改sys的表props$,把name='NLS_CHARACTERSET'行的values$设置为新的字符集。例如
  
  updateprops$setvalue$='ZHS16CGB231280'wherename='NLS_CHARACTERSET';
  
  3)设置环境变量NLS_LANG。例如
  
  NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
  
  4)用EXP做全部数据库备份。
  
  5)关闭Oracle。
  
  6)重新创建数据库。
  
  7)用IMP做全部数据库恢复。
  
  8)如果由于各种原因不成功,可以使用第一步的物理备份恢复原始数据库。
  
  2.Developer/2000字符集的改变
  
  Developer/2000安装后,可以通过修改文件oracle.ini修改字符集,修改方法可参考方案一。
  
  Developer/2000的字符集改变以后,原来编译好的文件(如*.fmx)可以正常运行,但源文件(如*.fmb)里的提示性汉字显示为乱码,即使重新编译以后运行,提示性汉字仍显示为乱码。所以,如果要修改源程序,还要对其中的汉字重新改写。
相关内容
赞助商链接