sql >> Base de Datos >  >> RDS >> Oracle

Problemas para usar/mostrar caracteres especiales de Oracle db en la aplicación .Net

Ciertos caracteres en el juego de caracteres WE8ISO8859P1 tienen una representación binaria diferente que el mismo carácter en UTF8.

Lo que sugiero son 2 formas posibles

1) Intente usar proveedores de datos nativos de Oracle para .NET (ODP.NET). Puede haber un error/característica en la biblioteca System.Data.OracleClient de Microsoft que indica que este adaptador no admite automáticamente la conversión de WE8ISO8859P1 a Unicode. Aquí hay un enlace a ODP.NET

Espero que haya soporte para esta codificación en ODP (pero para decir verdad, nunca verifiqué esto, es solo una sugerencia)

2) Solución alternativa:en el conjunto de datos, debe crear un campo binario (asignado al campo de la tabla original) y un campo de cadena (no asignado a la base de datos). Cuando cargue datos en el conjunto de datos, itere para cada fila y realice la conversión de matriz binaria a cadena.

El código debería ser algo como esto

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