सी# में स्पष्ट एन्कोडिंग निर्दिष्ट किए बिना स्ट्रिंग का सुसंगत बाइट प्रतिनिधित्व कैसे प्राप्त करें?
नमस्ते! मैं एक शुरुआती C# डेवलपर हूं, और मुझे स्ट्रिंग्स को बाइट्स में बदलने में समस्या आ रही है। मुझे नेटवर्क पर स्ट्रिंग डेटा भेजना और फ़ाइल में सहेजना है, लेकिन मैंने देखा कि वापस पढ़ने पर डेटा कभी-कभी अलग होता है।
मैंने `Encoding.Default` का उपयोग करने की कोशिश की, लेकिन अलग-अलग कंप्यूटरों पर परिणाम अलग होता है। फिर मैंने `Encoding.ASCII` की कोशिश की, लेकिन यह रूसी अक्षरों और अन्य यूनिकोड वर्णों का समर्थन नहीं करता। अब मैं ऐसा कर रहा हूं:
```csharp
string text = "Привет, мир!";
byte[] bytes = Encoding.UTF8.GetBytes(text);
string restored = Encoding.UTF8.GetString(bytes);
```
यह काम करता है, लेकिन सवाल यह है: मुझे हमेशा स्पष्ट रूप से `Encoding.UTF8` क्यों निर्दिष्ट करना चाहिए? क्या .NET स्वयं सही एन्कोडिंग निर्धारित नहीं कर सकता? आखिरकार, C# में स्ट्रिंग्स पहले से ही आंतरिक रूप से यूनिकोड में संग्रहीत हैं। `text.ToBytes()` या `text.GetBytes()` जैसी कोई सरल विधि क्यों नहीं है?
Stack Overflow पर मैंने एक मिलियन व्यूज वाला समान प्रश्न देखा, लेकिन वहां हमेशा एन्कोडिंग निर्दिष्ट करने की सलाह दी जाती है। लेकिन मुझे लगता है कि यह असुविधाजनक है और आसानी से भूला जा सकता है।