日期:2014-05-17  浏览次数:21281 次

Oracle PL/SQL Developer出现中文乱码问题,求助!
使用PLD进行数据库编程,结果在进行dbms_output.put输出的时候,里面的中文字符会输出成乱码!

  而在用select查询表中数据时,表中的中文字符就能正确显示。

  上网查阅资料,结果说是什么字符集的问题,叫修改注册表里NLS_LANG的值,
我注册表的默认值是SIMPLIFIED CHINESE_CHINA.ZHS16GBK,改成AMERICAN_AMERICA.UTF8或者AMERICAN_AMERICA.ZHS16GBK都一样的dbms出来的中文字符还是乱码!

程序代码:
declare
  a number:= 3;
  b number:= 4;
  c number;
  begin
  c := (a*b)/(a+b);
  dbms_output.put_line('结果为:' || c);
  exception
  when zero_divide then
  dbms_output.put_line('除数不能为0');
  end;

显示结果:??????1.71428571428571428571428571428571428571

请教各位大侠,有什么解决方法,小弟感激不尽!

------解决方案--------------------
.2句话搞定客户端和服务器字符集不一致 
a.查询服务器端配置的字符集。在sqlplus中以dba用户执行:
select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,(select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;

b.在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_LANG,则“新建”->“字符串”,重命名为“NLS_LANG”,并赋值为上述查询变量的值(注意引号内的字符应大写),再查看时不需要重启Oracle。
------解决方案--------------------
探讨
引用:
.2句话搞定客户端和服务器字符集不一致
a.查询服务器端配置的字符集。在sqlplus中以dba用户执行:
select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(selec……