如何在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是
- 你不想打电话给
TO_CHAR
在您的查询。 - 在显示数据之前,您不希望将数据从Unicode转换为ASCII。 ASCII不能编码阿拉伯数据,所以数据总是会被损坏。
您确定阿拉伯数据已被正确写入数据库吗?
SELECT dump(grower_name, 1016)
FROM v_grow
WHERE rownum < 2
return(假设每行都有阿拉伯数据)。
是的,我将数据存储在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
那么我现在该做什么 – 2012-02-24 08:58:57
Sir R u there请帮我在这里 – 2012-02-24 10:53:11