2009-04-06 15 views
0

J'utilise le standard .NET OdbcConnection pour me connecter à une base de données AS/400 iSeries. Je suis capable d'interroger cette base de données. Malheureusement, il y a des champs qui semblent être encodés. Comment puis-je décoder ces valeurs en C#? J'ai essayé ce qui suit:C# - Décodage de données à partir d'un AS/400 iSeries

string text = string.Empty; 
if (bytes.Length > 0) 
{ 
    ASCIIEncoding encoder = new ASCIIEncoding(); 
    text = encoder.GetString(bytes); 
} 
return text; 

La variable bytes représente les données qui doivent être décodées. Malheureusement, je n'ai pas de chance. On m'a dit que les données retourneront correctement si j'installe une source de données ODBC sur mon ordinateur Windows et cochez la case "Convertir les données binaires (CCSID65535) en texte" dans l'onglet de traduction. Cependant, je veux utiliser du C# pur. Des idées? Suis-je loin?

Merci!

+0

En quoi les données sont-elles erronées? Avez-vous essayé d'autres encodages? Avoir un échantillon de code? –

Répondre

7

Les chances sont-elles en utilisant EBCDIC. Vous pouvez essayer d'utiliser Encoding.GetEncoding (37) ou vous pouvez utiliser le EBCDIC encoding que j'ai écrit il y a un moment.

+0

Battez-moi, Jon. EBCDIC était ma première pensée aussi. – Kevin

+0

Vous êtes l'homme. Cela a enlevé mon mal de tête grand moment. Je vous remercie beaucoup pour votre aide! – user70192

+0

Suggérerait d'utiliser l'un des noms ("IBM037" ou similaire voir http://msdn.com/System.Text.Encoding pour une liste complète) car cela évite le nombre magique. – Richard