C#-从AS/400 iSeries解码数据

C#-从AS/400 iSeries解码数据,c#,ibm-midrange,C#,Ibm Midrange,我使用标准的.NET OdbcConnection连接到AS/400 iSeries数据库。我可以查询这个数据库。不幸的是,有些字段似乎已编码。如何在C#中解码这些值?我尝试了以下方法: string text = string.Empty; if (bytes.Length > 0) { ASCIIEncoding encoder = new ASCIIEncoding(); text = encoder.GetString(bytes); } return text;

我使用标准的.NET OdbcConnection连接到AS/400 iSeries数据库。我可以查询这个数据库。不幸的是,有些字段似乎已编码。如何在C#中解码这些值?我尝试了以下方法:

string text = string.Empty;
if (bytes.Length > 0)
{
    ASCIIEncoding encoder = new ASCIIEncoding();
    text = encoder.GetString(bytes);
}
return text;
bytes变量表示需要解码的数据。不幸的是,我没有任何运气。我被告知,如果我在Windows计算机上设置ODBC数据源并选中翻译选项卡中的“将二进制数据(CCSID65535)转换为文本”复选框,数据将正确返回。但是,我想使用纯C。有什么想法吗?我走远了吗


谢谢

很可能它正在使用EBCDIC。您可以尝试使用Encoding.GetEncoding(37),也可以使用我刚才编写的代码。

具体来说,数据是如何错误的?你试过其他编码吗?有代码样本吗?快点,乔恩。EBCDIC也是我的第一个想法。你就是那个人。这大大减轻了我的头痛。非常感谢你的帮助!建议使用其中一个名称(“IBM037”或类似名称,请参阅完整列表),因为这样可以避免使用幻数。@Richard:它将幻数更改为幻数字符串:)如果这些名称通过编码API公开就好了…@Jon:Like Encoding.GetEncodings“返回包含所有编码的数组”?