如何在Asp.net中读取阿拉伯字符集数据

问题描述:

我正在使用此代码从Oracle数据库读取数据。存储在Oracle中的数据是Navarchar2数据类型,但是当它在gridview中显示时,它看起来像这样。 ? &? ?????? ??? ?我的数据库Charaacter集是WE8MSWIN1252如何在Asp.net中读取阿拉伯字符集数据

这里是我从Oracle数据库读取的mY代码。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     Dim con = New OleDbConnection("Data Source=cms; User ID=cms20112012; Password=??????; provider=OraOLEDB.Oracle")   
     con.open() 
     Dim cmd As New OleDbCommand("Select to_char(grower_Name) grower from V_GROW", con) 
     Dim da As New OleDbDataAdapter(cmd) 
     Dim ds As New DataSet 
     Dim I As Long 
     da.Fill(ds, "V_GROW") 
     GridView1.DataSource = ds 
     GridView1.DataBind() 
     For I = 0 To ds.Tables("V_GROW").Rows.Count - 1 
      Dim grower As String = ds.Tables("V_GROW").Rows(I).Item("grower") 
      grower = Encoding.ASCII.GetString(Encoding.Unicode.GetBytes(grower)) 
      Label1.Text = grower 
     Next I 
     con.close() 
    End Sub 

请人帮我走出这个问题

您的数据库需要使用UTF编码,否则它将无法正确存储/检索。当您设置Oracle数据库时 - 您必须将字符集(国家和数据库)设置为UTF。

什么是国家字符集的数据库的?什么数据类型是GROWER_NAME

假设GROWER_NAME是一个NVARCHAR2和国家字符集AL16UTF16是

  1. 你不想打电话给TO_CHAR在您的查询。
  2. 在显示数据之前,您不希望将数据从Unicode转换为ASCII。 ASCII不能编码阿拉伯数据,所以数据总是会被损坏。

您确定阿拉伯数据已被正确写入数据库吗?

SELECT dump(grower_name, 1016) 
    FROM v_grow 
WHERE rownum < 2 

return(假设每行都有阿拉伯数据)。

+0

是的,我将数据存储在NVARCHAR2数据类型和我的数据库NLS_CHARACTERSET是WE8MSWIN1252和NLS_NCHAR_CHARACTERSET是AL16UTF16并通过您的方法我的数据已经改变成这种形式的典型值= 1长度= 30 CHARACTERSET = AL16UTF16:0,d8,0,A7 ,0,d9,20,1e,0,d9,20,1e,0,分贝,0,81,0,20,0,d8,0,a8,0,d8,0,AE,0,d8,0 ,b4 – 2012-02-24 08:55:38

+0

那么我现在该做什么 – 2012-02-24 08:58:57

+0

Sir R u there请帮我在这里 – 2012-02-24 10:53:11