使用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请教各位大侠,有什么解决方法,小弟感激不尽!

解决方案 »

  1.   

    .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可用一句更简单的语句来达到目的:select userenv('language') from dual;
     你说的这个方法也试过,但是依然无效,dbms出来的还是乱码!  请问还有其他方法吗?
      

  3.   

    首先你去cmd下使用sqlplus执行下,看是不是还有乱码。
    如果那个下面不是乱码,就和你的plsql的设置有关了
      

  4.   


    试试SQLPLUS 情况是否一致  诺不是重新安装plsql
      

  5.   

    在sqlplus中显示正常,在PL/SQL Deverloper中还是乱码,可能是psd的问题,再请问是不是需要再哪里设置?
      

  6.   


    --跟你的系统环境米有关系了
    --是你的工具问题,设置工具的font
      

  7.   


    网上是有种方法说是设置font 字体,但是我的Developer没有User那个选项,也没有font选项!难道只有重装Developer吗?
      

  8.   

    遇到同样的问题,SQL*PLUS同样输出乱码。