2010-10-12 10 views
2

Ma base de données de test a un codage AL32UTF8, mais la base de données de production a un codage WE8ISO8859P1. Mon application est écrite en .NET et j'utilise la classe par défaut System.Data.OracleClient.OracleConnection pour établir la connexion.Le codage Oracle peut-il être défini dans une chaîne de connexion?

Je crée une IDbCommand et j'ajoute des objets IDbDataParameter lorsque je veux insérer des chaînes avec des symboles non ASCII. Sur la base de données de test tout fonctionne bien, convertir correctement le format de chaîne interne de .NET à AL32UTF8 fonctionne très bien. Cependant, en production, je ne travaille pas. La représentation de chaîne interne .NET (qui est utf16) ne peut pas être convertie en WE8ISO8859P1 en quelque sorte.

Ma question: Pouvez-vous spécifier le codage de la base de données dans la chaîne de connexion? Ou existe-t-il une autre méthode pour indiquer au pilote (System.Data.OracleClient.OracleConnection) que la base de données attend un encodage spécifique?

+0

Veuillez ne pas donner de réponses comme: convert (c1, 'WE8ISO8859P1'), ce n'est pas ce que je veux! – Jaap

+0

Aussi: la conversion de la base de données de production n'est pas une option pour le moment. – Jaap

+0

La conversion devrait se produire automatiquement tant que vous n'utilisez pas de caractères qui ne peuvent pas être représentés dans WE8ISO8859P1. Si vous avez de tels caractères, vous ne pouvez pas le stocker dans la base de données. Pourquoi est-ce que tu penses que ça ne marche pas? Avez-vous une erreur? Quel est le message erro? S'il vous plaît nous donner plus de détails. – Codo

Répondre

3

La conversion devrait se produire automatiquement tant que vous n'utilisez pas de caractères qui ne peuvent pas être représentés dans WE8ISO8859P1. Si vous avez de tels caractères, vous ne pouvez pas le stocker dans la base de données.

Si vous essayez de stocker le signe Euro (€), vous n'aurez pas de chance. Cela ne fait pas partie de WE8ISO8859P1.