服务器是ORACLE 9i 用企业管理器打开,里面的汉字都是乱码的,用powerbuilder打开可以正常看到汉字,客户端现在用VS.NET加载数据到DATAGRIDVIEW中,汉字还是乱码,都说是字符集的问题,服务器中的注册表的homeo中的NLS_LANG的键值是AMERICAN_AMERICA.WE8ISO8859P1,我客户端的也改成NLS_LANG的键值是AMERICAN_AMERICA.WE8ISO8859P1,为什么汉字还是显示乱码呢?

解决方案 »

  1.   

    http://blog.csdn.net/java3344520/archive/2010/04/10/5469843.aspx先看下能解决你的问题不?>
      

  2.   

    客户端的注册表中的nls_lang与数据库服务器字符集一致(而非服务器注册表)
    查看服务器使用的字符集
    SELECT userenv('language') FROM dual;
    然后将客户端修改为与服务器一致!
      

  3.   


    SQL> SELECT userenv('language') FROM dual;USERENV('LANGUAGE')
    --------------------------------------------
    AMERICAN_AMERICA.WE8ISO8859P1
    服务器也是这个啊
      

  4.   

    从楼主的描述来看,客户端和服务器的字符集一致了,思路是:1)查看数据库中的字符是否为乱码
    c:\>sqlplus /nolong
    sql>connect ....  连接,指定用户名密码
    sql>select * from 表; 这时候,看看是不是乱码2) 假如数据库中的不是乱码,说明是VS应用端的数据字符集问题,请将其修改成与数据库一致。
       这里可能需要写一些转换的代码
      

  5.   

    SQL> SELECT parameter, value   FROM nls_database_parameters   WHERE parameter LIKE '%CHARACTERSET%';PARAMETER                      VALUE
    ------------------------------ ----------------------------------------
    NLS_CHARACTERSET               WE8ISO8859P1
    NLS_NCHAR_CHARACTERSET         AL16UTF16SQL> select userenv('language') from dual;USERENV('LANGUAGE')
    ----------------------------------------------------
    AMERICAN_AMERICA.WE8ISO8859P1
    似乎LZ的客户端的字符集配置是正确的。
    有没有可能是PB哪里作了一些显式的转换。
    你用.net客户端插入一些中文数据看看,它如果显示正确,PB显示乱码,则基本上是PB里出现的问题了。
      

  6.   

    我用SELECT * FROM 表,看里面的是汉字