2012-02-24 2 views
2

Я использую этот код для чтения данных из базы данных Oracle. Эти данные, хранящиеся в Oracle, - это тип данных Navarchar2, но когда он отображается в gridview, это выглядит так. ? &? ?????? ??? ? Моя база данных Набор Charaacter - WE8MSWIN1252Как читать данные арабской кодировки в Asp.net

Вот код mY, через который я читаю из базы данных Oracle.

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_NAME является NVARCHAR2 и что национальный набор символов AL16UTF16

  1. Вы не хотите звонить TO_CHAR в запросе.
  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, дБ, 0,81,0,20,0, d8,0, a8,0, d8,0, ая, 0, d8,0 , b4 –

+0

Итак, что мне теперь делать –

+0

Sir R u there Пожалуйста, помогите мне здесь –

Смежные вопросы