不思議な文字から返されたバイトストリーム?
-
21-08-2019 - |
質問
を表示しようとした場合にバイトストリームからHLDS(専用サーバ)のテキストボックスで表示す不思議なblockyいう文字を見て思ったこと。
[?]
こちらのサンプルからのバイトストリーム(with[?] の不思議な文字):
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の右の答えです。のログに戻りのために改行は 、\0のログライン配信.交換は との環境です。改行や\0と文字列になります。空の文字が崩れてきています。ます。.
解決
まず、私は、テキストボックスが今までの文字0を受信した場合、彼らはそれがデータの終わりだと仮定しますと信じている - あなたはそれを防ぐためにしたいことがあり、特に
。どこバイトストリームから来るのでしょうか?それは、の意味のように何エンコーディングですか?データのその時点でバイトを教えてください。
他のヒント
- せていただきましたが、データは純粋なアスキー?でも、多くの、多くのコードページ?
- はすきっかけに、[CR]vs[LF]vs[CR][LF]?
- いてお話聞かせてくださいをご利用バイトをする"周囲の選手に..."?何を期待しています。ま が を認識できるようになる、コードページ
そのバイトのいずれかのcodepage区128-255)、制御文字(0-31).
あなたはテキストボックスが理解する改行文字を使用して手動でそれらを交換する必要がある場合があります、またはあなたはそれがまだない場合、あなたのテキストボックス複数行をする必要があります。
:A>ちょうどあなたが設定にすると言いますTextBox1.MultiLine = true
応答の後:
文字の一部がCRLFをaren'r場合は、、あなたはあなたがそれらを取得している方法を検討する必要があります。
Encoding.ASCII.GetString()
からの実際の出力を見て、そこに何があるか見ます。
あなたの例のものは明らかに行末文字です。 (あなたはバイトの内容を確認するまで)私はそこに何が起こっているかわからないので、CRLFが複数行のテキストボックスに動作するはずです - 。他の文字はスペース(つまり、一つの選択肢だ)
に置き換えてもよいですそして、私はそれ以外の場合は非常によく並ばないので、このテキストボックスのフォントは、比例しない固定されますと仮定しています。