当试图在文本框中显示来自 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 *****
Jon Skeet 提供了正确的答案。日志返回 \n 换行符(不是 \r\n),并在每个流式传输的日志行末尾返回 \0。将 \n 替换为 Environment.NewLine 并将 \0 替换为 string.Empty 并且奇怪的字符消失了。谢谢乔恩。