我用vs2008的vb写一个程序,但是从数据库oracle中读出中文,然后赋值给textbox,但结果是一串正方形乱码,求解怎么处理这个问题

解决方案 »

  1.   

    select userenv('language') from dual; 输出的字符集必须能够支持中文。注册表中,或者你在程序运行变量中设置NLS_LANG 能够反应你程序所使用的字符集。以便数据库能够正确给你转码
      

  2.   

    数据库是这种编码AMERICAN_AMERICA.US7ASCII,在vb里面应该怎么处理才可以查询出中文,麻烦各位大侠了
      

  3.   

    百度有人说。。
    利用System.Data.OleDb.OdbcConnection类访问数据,可以解决编码AMERICAN_AMERICA.US7ASCII读取中文乱码的问题。。可以试试看      连接字符串:"Provider=MSDAORA.1;Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.0.5)(PORT = 1521)))(CONNECT_DATA = (SID = DEV))) ;User Id=lswen;Password=1169"另外的说法。。
    依據測試的結果顯示 CoreLab 公司的 OraDirect.NET 可在此狀況下正確顯示中文,執行效率也較 OLE-DB Provider 來的高。
      

  4.   

    修改注册表即可。
    Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0]
    "ID"="0"
    "ORACLE_GROUP_NAME"="Oracle - OraHome81"
    "ORACLE_HOME_NAME"="OraHome81"
    "ORACLE_HOME"="E:\\oracle\\ora81"
    "NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
    "ORACLE_HOME_KEY"="Software\\ORACLE\\HOME0"
    "SQLPATH"="E:\\oracle\\ora81\\dbs"
    "MSHELP_TOOLS"="E:\\oracle\\ora81\\MSHELP"
      

  5.   

    如果数据库字符集是AMERICAN_AMERICA.US7ASCII 理论上是不能存储中文的。AMERICAN_AMERICA.US7ASCII是单字节字符集,而中文最少要两个字节。如果不能将数据库修改为建议使用zhs16gbk(中文支持很好),或者al32utf8(支持多语言)当然,有一种方法,可以欺骗数据库,让中外正确显示,那就是把注册表的nls_lang 修改为AMERICAN_AMERICA.US7ASCII。一般不建议这么做,因为将来备份、数据交换的时候很容易乱码。
      

  6.   

    如果要欺骗数据库修改为
    "NLS_LANG"="AMERICAN_AMERICA.US7ASCII"如果要数据库能够真正存储中文,修改数据库字符集.在创建数据库的时候设置的.
      

  7.   

    注册表的nls_lang 已经是AMERICAN_AMERICA.US7ASCII了,问题我在vs里面转不了,读出来的中文显示不了,汗,麻烦大侠了