आख़िर ये बराबर (=) के निशान क्या हैं?
(lars.ingebrigtsen.no)- हाल में Twitter पर पुराने email उद्धरण फैलने के साथ यह सवाल उठा कि वाक्यों के अंत में बराबर (=) का निशान क्यों दिखाई देता है
- यह निशान ‘quoted-printable’ encoding प्रक्रिया से आता है, और लंबी पंक्तियों को ज़बरदस्ती तोड़ते समय यह दिखाने के लिए इस्तेमाल होता है कि पंक्ति आगे जारी है
- email ट्रांसमिशन के दौरान CRLF(carriage return + line feed) को line break के रूप में इस्तेमाल किया जाता है, लेकिन इसे Unix के NL में बदलते समय अगर decoding algorithm गलत काम करे तो बराबर का निशान बचा रह सकता है या अक्षर खो सकते हैं
- बराबर का निशान line break के अलावा non-ASCII characters (जैसे: =C2=A0) को दिखाने के लिए भी इस्तेमाल होता है, और गलत decoder इसे साधारण replacement की तरह संभालकर त्रुटि पैदा करता है
- समस्या की जड़ bug वाले decoding logic और अनुचित conversion handling में है, जो दिखाती है कि email को प्रोसेस करने वाला व्यक्ति तकनीकी रूप से अपर्याप्त था
email उद्धरणों में बराबर (=) के निशान की असलियत
-
पिछले कुछ दिनों में Twitter पर पुराने email उद्धरण बड़ी संख्या में साझा किए गए, जिनमें वाक्यों के अंत में बराबर का निशान दिखना खास तौर पर नज़र आया
- लेखक ने इसे code या OCR(ऑप्टिकल कैरेक्टर रिकग्निशन) त्रुटि समझने वाले दावों का खंडन किया
- वास्तव में यह email को पढ़ने लायक फ़ॉर्म में बदलने की प्रक्रिया में हुई encoding handling error है
-
email पहले साधारण text हुआ करता था, लेकिन लंबी पंक्तियों और विशेष अक्षरों को संभालने के लिए ‘quoted-printable’ encoding लाई गई
- लंबी पंक्तियाँ तोड़ते समय पंक्ति के अंत में बराबर (=) जोड़कर यह बताया जाता है कि “यह पंक्ति आगे जारी है”
- इस समय बराबर के निशान के बाद CRLF(carriage return + line feed) आता है
line break encoding और decoding त्रुटि
-
email server मानक के तौर पर CRLF line break का उपयोग करते हैं, जबकि Unix सिस्टम केवल NL का उपयोग करते हैं
- conversion के दौरान एक byte कम हो जाता है, और decoder अगर इसे गलत तरीके से संभाले तो बराबर का निशान रह जाता है या अक्षर गायब हो जाते हैं
- उदाहरण के लिए, “non- =CRLF cloven” को गलत तरीके से प्रोसेस किया जाए तो वह “non- loven” बन सकता है, जहाँ ‘c’ गायब हो जाता है
-
कुछ implementations पंक्ति के अंत में बराबर का निशान मिलने पर दो characters हटाने के तरीके से काम करती हैं
- Unix फ़ॉर्मैट फ़ाइलों में यही algorithm गड़बड़ कर जाता है और बराबर का निशान जस का तस रह जाता है
बराबर के निशान का एक और उपयोग: non-ASCII character encoding
-
बराबर का निशान line break के अलावा non-ASCII character encoding में भी इस्तेमाल होता है
- उदाहरण: “=C2=A0” का मतलब non-breaking space(लाइन ब्रेक रोकने वाला स्पेस) है
- यह email body में indentation या special characters दिखाने के लिए अक्सर आता है
-
लेखक का अनुमान है कि कुछ converters ने =C2, =A0 जैसी चीज़ों को केवल search-replace से संभाला, सही decoder का उपयोग नहीं किया
तकनीकी पृष्ठभूमि और मानक
-
RFC 2045 मानक quoted-printable encoding को transport के लिए परिभाषित करता है
- प्राप्ति के बाद इसे decode करके साफ़ text के रूप में सहेजना ही सिद्धांत है
- लेकिन वास्तविक implementations में यह प्रक्रिया छोड़ दी जाती है, जिससे line break handling errors बार-बार होती हैं
-
उदाहरण code में
(quoted-printable-decode-string "he=\nllo")सही तरह से"hello"में बहाल हो जाता है- ऐसा इसलिए है क्योंकि algorithm को SMTP server संदर्भ में CRLF मानकर दोबारा इस्तेमाल किया गया
- Windows आधारित फ़ाइलों में यह सही काम करता है, लेकिन Unix आधारित सिस्टमों में असफल हो जाता है
निष्कर्ष
- email उद्धरणों में दिखने वाला बराबर का निशान quoted-printable encoding का अवशेष है, और
line break handling तथा non-ASCII character decoding की खामियों के संयुक्त परिणाम के रूप में उभरता है - समस्या का मूल कारण गलत decoder implementation और encoding conversion की त्रुटियाँ हैं
- लेखक इसे “तकनीकी समस्या और गलत processing का परिणाम” कहकर संक्षेपित करता है,
और email conversion प्रक्रिया में मानकों के सूक्ष्म पालन की आवश्यकता पर ज़ोर देता है
अभी कोई टिप्पणी नहीं है.