当前位置: 首页 > 知识库问答 >
问题:

无效字符的一致字节表示

轩辕海
2023-03-14

很抱歉,如果这个问题在某个地方得到了回答,但如果有,我找不到。

我正在对字节数组进行一些操作,并注意到当转换无效字符(例如,字节0x9C)时,它被解释为“?”.因此,当我把它转换回一个字节时,结果是0x3F。

我的问题是字节数组的一部分是ASCII,但其他部分是校验和,可能包含像这样的无效字符。为了方便起见,我希望能够将整个数组转换成一个字符串。有没有一种编码方式可以产生正常字符的ASCII码,并确保将无效字符转换成字符串或反过来会产生相同的字节?

共有2个答案

羊舌昆杰
2023-03-14

不知道您所说的“正常字符”是什么意思,但是您要求的是一种可以解码任意字节值0-255的任意序列的编码。它需要一个有256个代码点的字符集,有1字节的代码单元,在一个代码单元中编码所有的代码点,在。NET基本类库和字符集是Unicode的子集。

ISO 8859-1和CP437是符合这些要求的两个。您可以检查它们是否将您的“正常字符”映射到Unicode中的“正常字符”。(提示:ISO 8859-1具有与C0控制和基本拉丁以及C1控制和拉丁-1补充块相同的所有字符。)

顺便问一下——你确定你的数据格式的区域是以ASCII编码的文本,而不是其他字符编码吗?

贾越
2023-03-14

可能不适用于其他人,但我发现通过使用

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

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

与其他编码相反,它防止字节数组中的值被更改为“?”和ASCII字符仍然可以正确解释。

 类似资料:
  • BITFIELD_INVALID是我的错误,我无法找到与我的问题相关的修复,只要我运行一个命令,任何命令,只要回复我,也只是我删除nuke时开始出现的一个旁注。js 如果你遇到这种情况,请告诉我,或者如果你有答案,我需要键入mroe,这样就没有必要了!!!,,,, 这儿呢 const{owner}=require(“../config”);

  • 问题内容: 我正在使用以下LINK 进行加密,并使用Strings进行了尝试,并且可以正常工作。但是,由于我要处理图像,因此我需要对字节数组进行加密/解密过程。因此,我将该链接中的代码修改为以下内容: 而检查器类是: 但是我的输出是: 因此,解密后的文本与纯文本不同。知道我在原始链接中尝试了该示例并且该示例可与Strings一起使用时,该怎么办才能解决此问题? 问题答案: 您所看到的是数组的toS

  • 总之,我正在尝试解析中的xml。但是XMLSpy告诉我xml的格式不好。 我相信这xml中包含了一些无效字符()。因为如果我把它拿走。XMLSpy的验证已通过。我认为UTF-8编码不允许这种字符。但是如果我真的想加入这种角色呢。我应该应用哪种编码?谢谢

  • 问题内容: 我有一个包含阿拉伯字符的xml文件。尝试解析文件时,出现异常,MalformedByteSequenceException:2字节UTF-8序列的无效字节2。我使用POI DOM来解析文档。 日志是 该异常仅在Windows Machine中出现,在Linux Machine中不出现。我该如何解决此问题。任何建议都应是可取的。 问题答案: 我已解决问题,方法是使用UTF8格式创建XML

  • 我在 Azure 表存储中有下表名称。表名是在我的应用程序中自动生成的,然后使用表创建。创建如果不存在(表名)。有些有效,有些则不然。当我深入研究错误时,扩展的错误信息告诉我资源名称包含无效字符 - 但是我无法弄清楚失败名称中无效的内容 - 任何人都可以发现这一点吗? -指定的资源名称包含无效字符 -指定的资源名称包含无效字符 –工程

  • 问题内容: 为什么以下项目失败?为什么使用编解码器成功? 结果是: 问题答案: 在二进制文件中,看起来像。如果你在上读到有关的信息,你会看到,这样的字节必须后面跟两个格式。因此,例如: 但这仅仅是例外的机械原因。在这种情况下,你几乎可以肯定用拉丁文1编码了一个字符串。你可以看到UTF-8和拉丁文1看起来如何不同: (请注意,我在这里混合使用了Python 2和3表示形式。输入在任何版本的Pytho