sql >> Database >  >> RDS >> Oracle

Problemen met het gebruiken/weergeven van speciale tekens van Oracle db in de .Net-app

Bepaalde tekens in de WE8ISO8859P1-tekenset hebben een andere binaire weergave dan hetzelfde teken in UTF8.

Wat ik voorstel zijn 2 mogelijke manieren

1) Probeer native Oracle-gegevensproviders voor .NET (ODP.NET) te gebruiken. Mogelijk is er een bug/functie in de Microsoft-bibliotheek System.Data.OracleClient dat deze adapter niet automatisch ondersteuning biedt voor het converteren van WE8ISO8859P1 naar unicode. Hier is een link naar ODP.NET

Ik hoop dat er ondersteuning zal zijn voor deze codering in ODP (maar om eerlijk te zijn heb ik dit nooit gecontroleerd, het is slechts een suggestie)

2) Tijdelijke oplossing:in Dataset moet u een binair veld maken (toegewezen aan het oorspronkelijke tabelveld) en een String-veld (niet toegewezen aan de database). Wanneer u gegevens naar de gegevensset laadt, herhaalt u voor elke rij en voert u de conversie uit van binaire array naar tekenreeks.

Code zou zoiets als dit moeten zijn

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. Wat is het verschil tussen een tijdelijke tabel en een tabelvariabele in SQL Server?

  2. Zoek verbindingsreeks om verbinding te maken met MySQL Server 5.1.50 met behulp van OleDbConnection

  3. MySQL - Waarom worden COLLATION-regels genegeerd door de LIKE-operator voor het Duitse ß-teken

  4. Oracle SQL:rij sorteren met gescheiden tekenreeks