sql >> Databáze >  >> RDS >> Oracle

Potíže s používáním/zobrazováním speciálních znaků z databáze Oracle v aplikaci .Net

Některé znaky ve znakové sadě WE8ISO8859P1 mají jinou binární reprezentaci než stejný znak v UTF8.

Navrhuji 2 možné způsoby

1) Zkuste použít nativní poskytovatele dat Oracle pro .NET (ODP.NET). Může se stát, že v knihovně Microsoft System.Data.OracleClient je chyba/funkce, že tento adaptér automaticky nepodporuje převod WE8ISO8859P1 na unicode. Zde je odkaz na ODP.NET

Doufám, že v ODP bude podpora pro toto kódování (ale abych řekl pravdu, nikdy jsem to nekontroloval, je to pouze návrh)

2) Řešení:v Datasetu byste měli vytvořit binární pole (namapované na původní pole tabulky) a pole String (nenamapované na databázi). Když načtete data do datové sady, iterujte pro každý řádek a proveďte převod z binárního pole na řetězec.

Kód by měl být něco takového

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. Jak SUM z MySQL pro každý n záznam

  2. Jak funguje funkce SUBSTR() v MySQL

  3. Cursor For Loop s dynamickým SQL příkazem

  4. Instalace Django mysqlclient