C# में Base64: बिना सिरदर्द के स्ट्रिंग को एन्कोड और डिकोड कैसे करें
\n\nक्या आपने कभी ऐसी स्थिति का सामना किया है जहाँ आपको टेक्स्ट प्रोटोकॉल के माध्यम से बाइनरी डेटा भेजना हो, JSON में एक इमेज भेजनी हो, या हैश को पढ़ने योग्य रूप में सहेजना हो? यहीं पर Base64 आता है — एक पुराना, अच्छा, विश्वसनीय प्रारूप जो किसी भी बाइट को सुरक्षित टेक्स्ट में बदल देता है।
\n\nसवाल "How do I encode and decode a base64 string?" — Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक है (दसियों हज़ार व्यूज़)। और यह सही भी है: C# में Base64 के साथ काम करना सरल लगता है, लेकिन हर कदम पर खतरे छिपे होते हैं। आज हम A से Z तक सब कुछ समझेंगे: बुनियादी उदाहरणों से लेकर प्रोडक्शन के वास्तविक मामलों तक।
\n\nBase64 क्या है और इसकी आवश्यकता क्यों है?
\n\nBase64 बाइनरी डेटा (बाइट्स) को ASCII स्ट्रिंग के रूप में प्रस्तुत करने का एक तरीका है। वर्णमाला में 64 वर्ण होते हैं: A-Z, a-z, 0-9, साथ ही '+' और '/' वर्ण। स्ट्रिंग के अंत में अक्सर संरेखण के लिए '=' वर्ण जोड़ा जाता है।
\n\nइसका उपयोग कहाँ किया जाता है:
\n- \n
- JSON/XML में डेटा स्थानांतरण — बाइनरी डेटा को सीधे नहीं डाला जा सकता, केवल स्ट्रिंग के रूप में \n
- प्रमाणीकरण — Basic Auth लॉगिन और पासवर्ड को एन्कोड करने के लिए Base64 का उपयोग करता है \n
- डेटाबेस में इमेज स्टोर करना — छोटी तस्वीरें सीधे डेटाबेस में Base64 के रूप में संग्रहीत की जाती हैं \n
- ईमेल अटैचमेंट — MIME प्रारूप को बाइनरी फ़ाइलों के लिए Base64 की आवश्यकता होती है \n
C# में इस सब के लिए System.Convert क्लास जिम्मेदार है — Base64 के साथ काम करने के लिए आपका मुख्य उपकरण।
C# में स्ट्रिंग को Base64 में कैसे एन्कोड करें
\n\nसबसे सामान्य परिदृश्य: आपके पास एक सामान्य स्ट्रिंग है (उदाहरण के लिए, "Hello, World!"), और आप इसका Base64 प्रतिनिधित्व प्राप्त करना चाहते हैं।
यह इस प्रकार किया जाता है:
\n\nusing System;\nusing System.Text;\n\nstring original = "Hello, World!";\nbyte[] bytes = Encoding.UTF8.GetBytes(original);\nstring base64 = Convert.ToBase64String(bytes);\n\nConsole.WriteLine(base64); // आउटपुट: SGVsbG8sIFdvcmxkIQ==\n\nमहत्वपूर्ण बिंदु: Base64 बाइट्स के साथ काम करता है, स्ट्रिंग के साथ नहीं। इसलिए पहले हम स्ट्रिंग को बाइट्स की एक सरणी में बदलते हैं (UTF-8 एन्कोडिंग का उपयोग करके), और फिर इन बाइट्स को एन्कोड करते हैं।
\n\nUTF-8 क्यों, न कि ASCII? क्योंकि UTF-8 सभी Unicode वर्णों का समर्थन करता है, जिसमें सिरिलिक, चित्रलिपि और इमोजी शामिल हैं। यदि आप रूसी स्ट्रिंग के लिए ASCII का उपयोग करते हैं, तो डेटा खो जाएगा।
\n\nBase64 को वापस स्ट्रिंग में कैसे डिकोड करें
\n\nउलटी प्रक्रिया — डिकोडिंग — दर्पण की तरह दिखती है:
\n\nusing System;\nusing System.Text;\n\nstring base64 = "SGVsbG8sIFdvcmxkIQ==";\nbyte[] bytes = Convert.FromBase64String(base64);\nstring decoded = Encoding.UTF8.GetString(bytes);\n\nConsole.WriteLine(decoded); // आउटपुट: Hello, World!\n\nध्यान दें: यदि आपने स्ट्रिंग को UTF-8 में एन्कोड किया है, तो आपको UTF-8 में ही डिकोड करना होगा। अन्यथा आपको बकवास मिलेगा।
\n\nबाइनरी डेटा (इमेज, फ़ाइलें) के साथ काम करना
\n\nBase64 केवल स्ट्रिंग तक सीमित नहीं है। आप किसी भी बाइनरी डेटा को एन्कोड कर सकते हैं — उदाहरण के लिए, एक इमेज या PDF।
\n\nउदाहरण: बाइट्स की एक सरणी को Base64 में एन्कोड करना
\n\nbyte[] imageBytes = File.ReadAllBytes("photo.jpg");\nstring base64Image = Convert.ToBase64String(imageBytes);\n\n// अब स्ट्रिंग को JSON में सहेजा जा सकता है या API के माध्यम से भेजा जा सकता है\nConsole.WriteLine($"Base64 स्ट्रिंग की लंबाई: {base64Image.Length} वर्ण");\n\nवापस फ़ाइल में डिकोड करना:
\n\nstring base64Image = "..."; // आपकी स्ट्रिंग\nbyte[] imageBytes = Convert.FromBase64String(base64Image);\nFile.WriteAllBytes("decoded_photo.jpg", imageBytes);\n\nमहत्वपूर्ण: Base64 डेटा के आकार को लगभग 33% बढ़ा देता है। यदि आपके पास 1 MB की इमेज है, तो एन्कोडिंग के बाद इसका वजन स्ट्रिंग के रूप में ~1.33 MB होगा।
\n\nसामान्य त्रुटियाँ और उनसे कैसे बचें
\n\nअनुभवी डेवलपर भी कभी-कभी Base64 पर फिसल जाते हैं। यहाँ सबसे सामान्य गलतियाँ हैं:
\n\n