C#中EBCDIC编码字节数组转字符串遇编码不支持异常求解决方案
EBCDIC编码字节数组转C#字符串的解决方案
你遇到的错误是因为.NET里根本没有叫"EBCDIC"或"UTF-EBCDIC"的编码名称——EBCDIC是一类编码的统称,不是具体编码;而"UTF-EBCDIC"本身就是不存在的概念,UTF和EBCDIC是完全不同的编码体系,别混着用。
解决方法如下:
先确定具体的EBCDIC编码类型
EBCDIC包含多个具体编码,不同场景用的不一样,常见的对应.NET编码名称/代码页:- IBM037(代码页37):美国英语标准EBCDIC
- IBM1047(代码页1047):开放系统用的欧洲EBCDIC
- IBM500(代码页500):国际通用EBCDIC
- 还有IBM00850、IBM00870等,得根据你的数据源确定具体是哪一种。
用正确的编码名称/代码页转换
比如确定是IBM037编码,就这么写:// 用编码名称 string str = Encoding.GetEncoding("IBM037").GetString(bytes); // 或者用代码页编号 string str = Encoding.GetEncoding(37).GetString(bytes);.NET Core/.NET 5+的特殊处理
如果是在.NET Core或更高版本里,部分EBCDIC编码默认没被包含,需要先安装System.Text.Encoding.CodePagesNuGet包,然后在应用启动时注册编码提供者:Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); // 之后再执行转换代码 string str = Encoding.GetEncoding("IBM037").GetString(bytes);
内容的提问来源于stack exchange,提问作者kzfid
相关产品推荐
相关产品推荐

