Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблем с използването/показването на специални знаци от Oracle db в приложението .Net

Някои символи в набора от символи WE8ISO8859P1 имат различно двоично представяне от същия знак в UTF8.

Предлагам 2 възможни начина

1) Опитайте да използвате собствени доставчици на данни на Oracle за .NET (ODP.NET). Възможно е да има грешка/функция в библиотеката на Microsoft System.Data.OracleClient, че този адаптер не поддържа автоматично конвертиране на WE8ISO8859P1 в unicode. Ето връзка към ODP.NET

Надявам се, че ще има поддръжка за това кодиране в ODP (но вярно, никога не съм проверявал това, това е само предложение)

2) Заобиколно решение:в набор от данни трябва да създадете двоично поле (съпоставено към полето на оригиналната таблица) и поле String (което не е съпоставено с базата данни). Когато зареждате данни в набора от данни, повторете за всеки ред и извършете преобразуване от двоичен масив в низ.

Кодът трябва да бъде нещо подобно

Encoding e = Encoding.GetEncoding("iso-8859-1");
foreach(DataRow row in dataset.Tables["MyTable"])
{
    if (!row.IsNull("MyByteArrayField"))
        row["MyStringField"] = e.GetString((row["MyByteArrayField"] as byte[]));
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при отваряне на Oracle връзка при свързване от .NET код

  2. Използване на подзаявка в изявление за проверка в Oracle

  3. LISTAGG еквивалент с прозоречна клауза

  4. Как вашият Oracle ODBC драйвер зарежда клиента на Oracle?

  5. Услугата на Windows в .net не може да разреши името на tns услугата