无法解码字节数组中的文本

Can't decode text from byte array

提问人:Strawberry 提问时间:2/15/2023 最后编辑:Flydog57Strawberry 更新时间:2/19/2023 访问量:454

问:

我有一个字节数组, 我试图变成一个没有成功的字符串。我试图在 c# 中以多种方式解码它:

 var stringToByte112 = System.Text.Encoding.UTF32.GetString(bytes, 0, i);
 var stringToByte11 = System.Text.Encoding.UTF7.GetString(bytes, 0, i);
 var stringToByte111 = System.Text.Encoding.UTF8.GetString(bytes, 0, i);
 var stringToByte1111 = System.Text.Encoding.Default.GetString(bytes, 0, i);
       = System.Text.Encoding.Unicode.GetString(bytes, 0, i);
 var stringToByte11111 = System.Text.Encoding.ASCII.GetString(bytes, 0, i);

但没有成功。

我最接近的是:

"\u0016\u0003\u0001\u0001\"\u0001\0\u0001\u001e\u0003\u0003A F?4Y'Y???\u0012}?\08?<SF?3B#??S?(?%?\0\0??0?,?(?$?\u0014?\n\0?\0?\0?\0?\0K\0J\0I\0H\09\08\07\06\0?\0?\0?\0??2?.?*?&?\u000f?\u0005\0?\0=\05\0??/?+?'?#?\u0013?\t\0?\0?\0?\0?\0G\0@\0?\0>\03\02\01\00\0?\0?\0?\0?\0E\0D\0C\0B?1?-?)?%?\u000e?\u0004\0?\0<\0/\0?\0A\0\a?\u0011?\a?\f?\u0002\0\u0005\0\u0004?\u0012?\b\0\u0016\0\u0013\0\u0010\0\r?\r?\u0003\0\n\0?\u0001\0\0I\0\v\0\u0004\u0003\0\u0001\u0002\0\n\0\u0010\0\u000e\0\u0017\0\u0019\0\u001c\0\u001b\0\u0018\0\u001a\0\u0016\0#\0\0\0\r\0 \0\u001e\u0006\u0001\u0006\u0002\u0006\u0003\u0005\u0001\u0005\u0002\u0005\u0003\u0004\u0001\u0004\u0002\u0004\u0003\u0003\u0001\u0003\u0002\u0003\u0003\u0002\u0001\u0002\u0002\u0002\u0003\0\u000f\0\u0001\u0001"

我还尝试用这个来获取编码:

using (StreamReader reader = new StreamReader(new MemoryStream(bytes),
                                                                          detectEncodingFromByteOrderMarks: true))
                            {
                                text = reader.ReadToEnd();
                                enc = reader.CurrentEncoding; // the reader detects the encoding for you!
                            }
                      

这返回了 UTF8,但 UTF8 编码器返回了乱码。

有问题的字节数组:

"16-03-01-01-22-01-00-01-1E-03-03-99-38-BB-63-4E-10-BB-9D-8A-1D-55-33-5C-29-1B-83-D2-40-76-57-1D-58-95-28-28-37-F0-4F-E8-4C-0E-6C-00-00-AC-C0-30-C0-2C-C0-28-C0-24-C0-14-C0-0A-00-A5-00-A3-00-A1-00-9F-00-6B-00-6A-00-69-00-68-00-39-00-38-00-37-00-36-00-88-00-87-00-86-00-85-C0-32-C0-2E-C0-2A-C0-26-C0-0F-C0-05-00-9D-00-3D-00-35-00-84-C0-2F-C0-2B-C0-27-C0-23-C0-13-C0-09-00-A4-00-A2-00-A0-00-9E-00-67-00-40-00-3F-00-3E-00-33-00-32-00-31-00-30-00-9A-00-99-00-98-00-97-00-45-00-44-00-43-00-42-C0-31-C0-2D-C0-29-C0-25-C0-0E-C0-04-00-9C-00-3C-00-2F-00-96-00-41-00-07-C0-11-C0-07-C0-0C-C0-02-00-05-00-04-C0-12-C0-08-00-16-00-13-00-10-00-0D-C0-0D-C0-03-00-0A-00-FF-01-00-00-49-00-0B-00-04-03-00-01-02-00-0A-00-10-00-0E-00-17-00-19-00-1C-00-1B-00-18-00-1A-00-16-00-23-00-00-00-0D-00-20-00-1E-06-01-06-02-06-03-05-01-05-02-05-03-04-01-04-02-04-03-03-01-03-02-03-03-02-01-02-02-02-03-00-0F-00-01-01"

真的不知道从这里去哪里, 有谁知道这是什么编码以及如何获得看起来“正常”的东西?

链接到保存到 TXT 文件的所有字节的文件:https://drive.google.com/file/d/14orWRM5LunbJOgPYQ5wbhxvwG-AFZ1SM/view?usp=sharing

C# 数组 Unicode UTF-8 ASCII

评论

2赞 Fildor 2/15/2023
似乎有 \0 字节,所以它似乎不是一个字符串(如果首先有一个字符串)。你对字节数组究竟了解多少?它从何而来?可能使用的来源是什么?你 100% 肯定你能期待一个字符串吗?
1赞 Strawberry 2/15/2023
字节数组来自外部供应商,发送 TCP 事件,该事件应包含相关事件的信息。在问题中添加了更多信息。
1赞 Fildor 2/15/2023
您是否尝试过将其按原样写入文件并使用十六进制编辑器查看?
2赞 Tanveer Badar 2/15/2023
我想知道这是否是任何字符串。是否有任何随附的文档来描述如何处理数据?
1赞 Fildor 2/15/2023
如果这不是一些超级花哨的代码页,我非常担心它实际上可能是二进制数据,而不是文本。遗产越多,情况就越可能如此。

答:

0赞 Strawberry 2/19/2023 #1

最后,我能够联系供应商,他们这边有一个错误,字节是无稽之谈。