当尝试在文本框中显示来自 HLDS(半条命专用服务器)的字节流时,它会显示奇怪的块状问号字符,如下所示:

[?]

这是字节流中的示例行(用 [?] 代替奇怪的字符):

CPU   In    Out   Uptime  Users   FPS    Players[?] 0.00  0.97  0.91    2806   182  297.25       1[?]

以下是将字节流显示为字符串的方法:

byte[] bytes = listener.Receive(ref sender); // get bytes from stream
TextBox1.Text = Encoding.ASCII.GetString(bytes, 0, bytes.Length); // write to textbox

人物出现的地方 [CR][LF] 通常应该出现。为什么它显示奇怪的字符,我该如何删除奇怪的字符或纠正编码?

***** UPDATE *****

乔恩·斯基特提供了正确的答案。日志在每个日志行流式传输的末尾返回 换行符(而不是 )和 \0。将 替换为 Environment.NewLine,将 \0 替换为 string.Empty,奇怪的字符就消失了。谢谢乔恩。

有帮助吗?

解决方案

首先,我认为,如果文本框曾经收到一个字符0,他们会认为这是数据的结尾 - 你可能要警惕的是专门

在哪里您的字节流从何而来?什么编码是它的意味着的是?什么是在数据点?

的字节

其他提示

  1. 您确定数据是纯 ASCII 格式吗?它可能在众多代码页之一中吗?
  2. 可能是因为[CR] vs [LF] vs [CR][LF]?
  3. 你能说出使用“玩家...”周围的字节吗?您期望看到什么?我们 可能 能够识别代码页

据推测,该字节位于代码页区域 (128-255) 或控制字符 (0-31) 中。

scroll top