无效字符的一致字节表示

时间:2017-07-12 19:55:55

标签: .net arrays string encoding byte

如果在某个地方得到了回答,请道歉,但如果有,我无法找到它。

我正在对字节数组进行一些操作,并注意到在转换无效字符(例如,字节0x9C)时,它被解释为"?"。因此,当我将其转换回一个字节时,它会显示为0x3F。

我的问题是字节数​​组的部分是ASCII,但其他的是校验和,可能包含像这样的无效字符。为了方便起见,我希望能够将整个数组转换为字符串。是否存在将为普通字符生成ASCII的编码,并确保将无效的char转换为字符串并返回将生成相同的字节?

2 个答案:

答案 0 :(得分:0)

可能不适合其他人,但我发现使用

System.Text.Encoding.Default.GetString(...)

System.Text.Encoding.Default.GetBytes(...)

与其他编码相反,阻止了字节数组中的值变为“?”和ASCII字符仍然正确解释。

答案 1 :(得分:0)

不确定你的意思"普通字符"但是你要求的编码可以解码任意字节值0-255的任意序列。它需要用于具有256个代码点的字符集,具有1字节代码单元,在一个代码单元中编码所有代码点,在.NET基类库中,并且字符集是Unicode的子集。

ISO 8859-1和CP437是满足这些要求的两种。您可以检查他们是否映射了您的正常字符"到"普通人物"在Unicode中。 (提示:ISO 8859-1与C0 Control and Basic Latin以及C1控件和Latin-1 Supplement块具有相同的字符。)

BTW-您确定数据格式的区域是用ASCII编码的文本而不是其他字符编码吗?