C # / Oracle: Spécifier le codage / jeu de caractères de la requête?

J’essaie de récupérer des données d’une firebase database Oracle 10.
Certaines cellules contiennent des trémas allemands (äöü).
Dans mon outil d’administration ( TOAD ), je peux très bien les voir: “Mantel f ü r Damen” (veste pour femmes)
Ceci est mon code C # (simplifié):

var oracleCommand = new OracleCommand(sqlGetArticles, databaseConnection); var articleResult = oracleCommand.ExecuteReader(); ssortingng temp = articleResult.Read()["SomeField"].ToSsortingng(); Console.WriteLine(temp); 

Le résultat est: “Mantel f ? R Damen”
Essayé sur le débogage (déplacement de la souris sur la variable), Fenêtre de débogage, Fenêtre de console, Fichier.

Je pense que je dois spécifier le codage / jeu de caractères quelque part. Mais où?

vous pouvez également append Unicode=true dans votre chaîne de connexion

C’était un problème avec OracleConnection:

 var oracleConnection = new OracleConnection(connectionSsortingng); oracleConnection.Open(); return oracleConnection; 

Cela a résolu le problème:

 oracleConnection.Unicode = true; 

(avant d’ouvrir la connexion)

Au fait: j’utilise le fournisseur ADO.NET pour Oracle de DevArt

Les chaînes CLR .Net sont codées [en interne] UTF-16. ADO.Net, du moins avec SQL Server, gère la traduction entre le format de chaîne natif de la firebase database et le codage UTF-16 utilisé dans le CLR .Net.

Je suppose que cela est également vrai pour le fournisseur ADO.Net d’Oracle.

Cependant, Console.WriteLine () fait sa propre chose. Vous pouvez obtenir (ou définir) le codage d’entrée via Console.InputEncoding et obtenir / définir le codage de sortie via Console.OutputEncoding.

Sur ma machine, Console.WriteLine () affiche correctement les caractères accentués. Le codage de sortie par défaut sur ma machine est System.Text.SBCSCodePageEncoding. Il utilise la page de codes IBM 437, également appelée Windows 1252. Et il utilise la police raster par défaut ‘Terminal’.

Si la police que vous utilisez ne prend pas en charge (au moins) les contrôles C0 et Basic Latin, ainsi que les contrôles C1 et le supplément Latin-1 (ISO 8859-1), il est peu probable que les caractères accentués aient du succès. la page de codes IBM 437 / Windows 1252 est principalement ISO 8859-1, sauf que les glyphes des points de code 0x80 à 0x9F (les caractères de contrôle C1) ont été affectés.