sql >> Databasteknik >  >> RDS >> Oracle

Problem med att använda/visa specialtecken från Oracle db i .Net-appen

Vissa tecken i teckenuppsättningen WE8ISO8859P1 har en annan binär representation än samma tecken i UTF8.

Det jag föreslår är två möjliga sätt

1) Försök att använda Oracles inhemska dataleverantörer för .NET (ODP.NET). Det kan vara en bugg/funktion i Microsofts bibliotek System.Data.OracleClient som denna adapter inte automatiskt stöder konvertering av WE8ISO8859P1 till unicode. Här är en länk till ODP.NET

Jag hoppas att det kommer att finnas stöd för denna kodning i ODP (men för att säga sant, jag har aldrig kontrollerat detta, det är bara ett förslag)

2) Lösning:i Dataset bör du skapa ett binärt fält (mappat till det ursprungliga tabellfältet) och ett strängfält (ej mappat till databasen). När du laddar data till datasetet, iterera för varje rad och utför konvertering från binär array till sträng.

Koden borde vara ungefär så här

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. Hur man lagrar en data vars typ kan vara numerisk, datum eller sträng i mysql

  2. Konvertera befintlig PHP/MYSQL/-webbplats till Native IOS/Android-appar

  3. Oracle datetime i VB.net

  4. Varför kan Java inte ansluta till MySQL 5.7 efter den senaste JDK-uppdateringen och hur ska det fixas? (ssl.SSLHandshakeException:Inget lämpligt protokoll)