Avatar ·

C# में मैन्युअल रूप से एन्कोडिंग निर्दिष्ट किए बिना स्ट्रिंग का समान बाइट प्रतिनिधित्व कैसे प्राप्त करें?

सभी को नमस्कार! मैं C# में नया हूँ और एक समस्या का सामना किया जिसने मुझे हैरान कर दिया। मुझे नेटवर्क पर स्ट्रिंग्स भेजने और उन्हें हैश करने की आवश्यकता है, लेकिन मैंने देखा कि जब मैं स्ट्रिंग को बाइट array में बदलता हूँ, तो परिणाम अलग-अलग कंप्यूटरों पर भिन्न हो सकता है।

यहाँ मेरे कोड का एक उदाहरण है:

string message = "Привет, мир!";
byte[] bytes = Encoding.Default.GetBytes(message);
// नेटवर्क पर bytes भेजें या हैश की गणना करें

समस्या यह है कि Encoding.Default सिस्टम locale के आधार पर अलग-अलग परिणाम देता है। मेरे Windows पर रूसी locale के साथ यह काम करता है, लेकिन अंग्रेजी locale वाले सर्वर पर नहीं। मैंने पढ़ा कि Encoding.ASCII वर्ण खो देता है, और Encoding.Unicode BOM (Byte Order Mark) देता है जो सब कुछ खराब कर देता है।

मुझे एक ऐसा समाधान चाहिए जो किसी भी प्लेटफॉर्म (Windows, Linux, Mac) पर समान रूप से काम करे और मुझे हर बार मैन्युअल रूप से एन्कोडिंग निर्दिष्ट करने की आवश्यकता न हो। C# में बिना किसी समस्या के स्ट्रिंग को बाइट्स में कैसे बदलें?