过程如下: 读出来时有中文就会变成乱码,英文可以正常显示。 如何解决?
public static string ReadLob(string table_name,string table_id,string idvalue,int column) 

OracleConnection myCn = new OracleConnection(System.Configuration.ConfigurationSettings.AppSettings["Oracle"].ToString());
OracleCommand myCmd = new OracleCommand(); 
try 

myCn.Open();         

catch(System.Data.OracleClient.OracleException e) 

throw new Exception(e.Message); 
}       
OracleTransaction myTrans = myCn.BeginTransaction(); 
try 
{                       
myCmd.Connection = myCn;         
myCmd.Transaction = myTrans; 
myCmd.CommandText = "SELECT * FROM "+ table_name +" where "+ table_id +" = "+ idvalue +" FOR UPDATE"; 
OracleDataReader reader = myCmd.ExecuteReader(); 
using(reader) 

reader.Read(); 
OracleLob CLOB = reader.GetOracleLob(column); 

byte[] buffer = new byte[(int)CLOB.Length];
CLOB.Read(buffer,0,(int)CLOB.Length);
Encoding utf8 = System.Text.Encoding.GetEncoding("utf-8");                         string final = utf8.GetString(buffer); 
return final;


catch(System.Data.OracleClient.OracleException e) 
{       
myTrans.Rollback(); 
throw new Exception(e.Message); 

finally 

myCmd.Dispose(); 
myCn.Close(); 

}

解决方案 »

  1.   

    其中这句:Encoding utf8 = System.Text.Encoding.GetEncoding("utf-8"); 中的"utf-8" 我改了好几种编码方式如:gb2312,default,utf-7,ASCII 等。但读出来的中文还是乱码。
      

  2.   

    http://blog.csdn.net/goody9807/articles/138871.aspx
      

  3.   

    不是整个页面乱码。  而是从oracle 数据库取出来的数据中的中文是乱码,英语则可以正常显示.
      

  4.   

    那我想问你一下。你在ORACLE里面存放这些数据的字段是什么类型的。你只要告诉我这个就行了
      

  5.   

    给你一个我以前写的php读取oracle这种长数据类型的一个函数:
    function dbresult($sql)//查询结果
    {
            //ECHO $sql."<br>";
           $stmt = OCIParse($this->lnkid,$sql);
           OCIExecute($stmt,OCI_DEFAULT);
           $i = 0;
          while (OCIFetchInto($stmt,$sql_array,OCI_ASSOC+OCI_RETURN_LOBS))
          {
             $numcols = OCINumCols($stmt);
               for ($column=1; $column <= $numcols; $column++)
              {
                   $str = strtoupper(OCIColumnName($stmt,$column));
                   $str_upper = OCIColumnName($stmt,$column);               
                   $return_result[$i][$str] = $sql_array[$str_upper];
             }
              $i = $i + 1;
         }
          OCIFreeStatement($stmt);
     //当没有记录时给变量赋予一个空数组
     if(empty($return_result)){
    $return_result=array();
     }      return $return_result;
    }
      

  6.   

    不能用varchar 2 字段吗?
      

  7.   

    to sdenli(史丹力):  当然是CLOB类型的.