Avatar ·

كيفية الحصول على تمثيل بايت موحد لسلسلة نصية في C# دون تحديد الترميز يدويًا؟

مرحبًا بالجميع! أنا مبتدئ في C# وقد واجهت مشكلة حيرتني. أحتاج إلى إرسال السلاسل النصية عبر الشبكة وتجزئتها (hashing)، لكني لاحظت أنه عند تحويل سلسلة نصية إلى مصفوفة بايت، قد تختلف النتيجة على أجهزة مختلفة.

إليك مثال على الكود الخاص بي:

string message = "Привет, мир!";
byte[] bytes = Encoding.Default.GetBytes(message);
// إرسال bytes عبر الشبكة أو حساب التجزئة

المشكلة هي أن Encoding.Default يعطي نتائج مختلفة اعتمادًا على الإعدادات المحلية للنظام. على نظام Windows الخاص بي مع الإعدادات المحلية الروسية يعمل، لكن على خادم بإعدادات محلية إنجليزية لا يعمل. قرأت أن Encoding.ASCII يفقد الأحرف، وأن Encoding.Unicode يعطي BOM (Byte Order Mark) الذي يفسد كل شيء.

أحتاج إلى حل يعمل بنفس الطريقة على أي منصة (Windows, Linux, Mac) ولا يتطلب مني تحديد الترميز يدويًا في كل مرة. كيف يمكن تحويل سلسلة نصية إلى بايت في C# دون تحديد الترميز؟