Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème d'utilisation/d'affichage des caractères spéciaux de la base de données Oracle dans l'application .Net

Certains caractères du jeu de caractères WE8ISO8859P1 ont une représentation binaire différente de celle du même caractère en UTF8.

Ce que je suggère, ce sont 2 façons possibles

1) Essayez d'utiliser les fournisseurs de données natifs Oracle pour .NET (ODP.NET). Peut-être y a-t-il un bogue/fonctionnalité dans la bibliothèque System.Data.OracleClient de Microsoft indiquant que cet adaptateur ne prend pas automatiquement en charge la conversion de WE8ISO8859P1 en Unicode. Voici un lien vers ODP.NET

J'espère qu'il y aura un support pour cet encodage dans ODP (mais pour dire vrai je n'ai jamais vérifié cela, ce n'est qu'une suggestion)

2) Solution :dans Dataset, vous devez créer un champ binaire (mappé au champ de table d'origine) et un champ String (non mappé à la base de données). Lorsque vous chargez des données dans l'ensemble de données, effectuez une itération pour chaque ligne et effectuez la conversion d'un tableau binaire en chaîne.

Le code devrait ressembler à ceci

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