2012-02-24 16 views
2

このコードを使用して、Oracle Databaseからデータを読み取ります。 Oracleに格納されているデータはNavarchar2データ型ですが、Gridviewに表示されるときはこのようになります。 ? &? ?????? ??? ?私のデータベースのキャラクターセットは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 

誰も私がこの問題

答えて

0

データベースがUTFエンコーディングを使用する必要があります。データベースが正しく格納/取得されません。 Oracleデータベースをセットアップするときは、文字セット(NationalおよびDatabase)をUTFに設定する必要があります。

0

データベースの各国語キャラクタ・セットがどのようなものですから抜け出すために助けてください? GROWER_NAMEはどのデータ型ですか?

GROWER_NAMENVARCHAR2であると仮定すると、各国語キャラクタ・セットは、あなたがあなたのクエリにTO_CHARを呼び出すにしたくないAL16UTF16

  1. であること。
  2. データを表示する前に、データをUnicodeからASCIIに変換する必要はありません。 ASCIIはアラビア語のデータをエンコードできないため、データは必ず破損します。

アラビア語のデータがデータベースに正しく書き込まれていることを確認してください。

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

リターン(すべての行にアラビア語のデータがあると仮定します)。

+0

はい私はNvarchar2データ型でデータを格納しています。データベースNLS_CHARACTERSETはWE8MSWIN1252であり、NLS_NCHAR_CHARACTERSETはAL16UTF16です。データはこの形式に変更されます。Typ = 1 Len = 30 CharacterSet = AL16UTF16:0、d8,0、a7 、0、d9,20,1e、0、d9,20,1e、0、db、0,81,0,20,0、d8,0、a8,0、d8,0、ae、0、d8,0 、b4 –

+0

だから私は今何をすればいいのですか –

+0

ここに助けてください –

関連する問題