Как читать арабские данные кодировки в Asp.net - PullRequest
2 голосов
/ 24 февраля 2012

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

Вот мой код, через который я читаю из базы данных 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

Пожалуйста, кто-нибудь поможет мне выйти из этой проблемы

Ответы [ 2 ]

0 голосов
/ 26 февраля 2012

Ваша база данных должна использовать кодировку UTF, иначе она не будет правильно сохраняться / извлекаться. Когда вы настраиваете базу данных Oracle - вы должны установить набор символов (Национальный и База данных) в UTF.

0 голосов
/ 24 февраля 2012

Что такое национальный набор символов базы данных? Какой тип данных 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 (при условии, что в каждой строке есть арабские данные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...