Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Probleme beim Verwenden/Anzeigen von Sonderzeichen aus der Oracle-Datenbank in der .Net-App

Bestimmte Zeichen im WE8ISO8859P1-Zeichensatz haben eine andere binäre Darstellung als dasselbe Zeichen in UTF8.

Was ich vorschlage, sind 2 mögliche Wege

1) Versuchen Sie, native Oracle-Datenanbieter für .NET (ODP.NET) zu verwenden. Möglicherweise gibt es einen Fehler/eine Funktion in Microsofts Bibliothek System.Data.OracleClient, dass dieser Adapter die Konvertierung von WE8ISO8859P1 in Unicode nicht automatisch unterstützt. Hier ist ein Link zu ODP.NET

Ich hoffe, dass es eine Unterstützung für diese Kodierung in ODP geben wird (aber um ehrlich zu sein, habe ich das nie überprüft, es ist nur ein Vorschlag)

2) Problemumgehung:In Dataset sollten Sie ein Binärfeld (das dem ursprünglichen Tabellenfeld zugeordnet ist) und ein Zeichenfolgenfeld (das nicht der Datenbank zugeordnet ist) erstellen. Wenn Sie Daten in das Dataset laden, iterieren Sie für jede Zeile und führen Sie eine Konvertierung von einem binären Array in einen String durch.

Der Code sollte in etwa so aussehen

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[]));
}