أحرف غريبة عادت من دفق البايت؟
-
21-08-2019 - |
سؤال
عند محاولة عرض دفق بايت من 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، وسوف نفترض أن هذا هو نهاية البيانات - قد ترغب في حماية ضد هذا تحديدا
.من أين يأتي تيار بايت بك من؟ ما الترميز هو عليه <م> يعني م> أن تكون؟ ما هي بايت عند هذه النقطة في البيانات؟
نصائح أخرى
- هل أنت متأكد من أن البيانات موجودة بصيغة ASCII خالصة؟هل ربما يكون موجودًا في إحدى صفحات الرموز العديدة؟
- هل ربما يكون ذلك بسبب [CR] مقابل [LF] مقابل [CR] [LF]؟
- هل يمكنك معرفة استخدام وحدات البايت الموجودة حول "اللاعبين..."؟وماذا تتوقع أن ترى؟نحن قد تكون قادرة على التعرف على صفحة التعليمات البرمجية
من المفترض أن يكون البايت إما في منطقة مخطط الشفرة (128-255)، أو أحرف التحكم (0-31).
وقد تحتاج إلى استبدالها يدويا مع شخصيات LINEBREAK التي من شأنها أن يفهم النص، أو قد تضطر إلى جعل متعدد الخطوط النص الخاص بك إذا لم يكن بالفعل.
Geekpedia و> يقول فقط للتأكد من تعيين:
TextBox1.MultiLine = true
وبعد الاستجابة:
وإذا كان بعض من الشخصيات aren'r CRLF، ثم تحتاج إلى دراسة كيف كنت الحصول عليها.
ونظرة على الانتاج الفعلي من Encoding.ASCII.GetString()
ونرى ما في هناك.
وهم فيكم سبيل المثال من الواضح أن الأحرف نهاية الخط لأنها تفصل رأس من خط البيانات. CRLF يجب أن تعمل في مربعات النص متعدد الأسطر لذلك أنا لست متأكدا ما يحدث هناك (حتى التحقق من محتويات بايت) - يمكن استبدال الشخصيات الأخرى مع مسافات (وهذا خيار واحد)
.و، أفترض الخط مربع النص هذا وسوف تكون ثابتة، لا يتناسب وإلا فإنه لن يصطف بشكل جيد للغاية.