पोस्टल कोड प्रारूप वह पहली चीज़ है जिसे कोई अंतरराष्ट्रीय फ़ॉर्म गलत करता है। जो फ़ील्ड कुछ अंक स्वीकार करके अपना काम खत्म मान लेता है, वह पूरे देशों को अस्वीकार कर देगा, कुछ का डेटा चुपचाप बिगाड़ देगा, और ऐसा मान भी पास कर देगा जिसे कोई डाक संचालक नहीं पहचानेगा। नियम जटिल नहीं हैं, पर वे स्थानीय हैं, और पूरी दुनिया के लिए कोई एक ही पैटर्न मौजूद नहीं है।
यह लेख पोस्टल कोड के मुख्य परिवारों, बिना पोस्टल कोड वाली जगहों, शुरुआती शून्य और लंबाई से जुड़ी बार बार आने वाली गलतियों, और फ़ॉर्म या डेटाबेस में क्या करना चाहिए — इन सब पर चलता है।
पोस्टल कोड के चार परिवार
ज़्यादातर पोस्टल कोड चार मोटे आकारों में से किसी एक में आते हैं। सीमाएं धुंधली हैं — कोई देश अपनी योजना बदल सकता है, और एक कोड एक से अधिक परिवार का हो सकता है — पर सत्यापन के बारे में सोचने का यह एक उपयोगी तरीका है।
- तय लंबाई के केवल अंक। कई देश अंकों की एक श्रृंखला इस्तेमाल करते हैं, आम तौर पर चार से छह। लंबाई देश के भीतर तय रहती है, जिससे एक सीधी लंबाई जांच संभव हो जाती है।
- तय संरचना वाले अंक। उत्तरी अमेरिका के कोड दो हिस्सों में बंटते हैं, और दूसरा हिस्सा व्यवहार में वैकल्पिक है, इसलिए एक ही पता छोटा या बड़ा रूप ले सकता है।
- अंकों के साथ मिले अक्षर। कनाडा, यूनाइटेड किंगडम, नीदरलैंड और आयरलैंड इसके परिचित उदाहरण हैं। इनमें से कुछ अक्षर और अंकों को तय लय में बदलते हैं; अन्य अक्षरों को अलग अर्थ वाले खंडों में बांटते हैं।
- क्षेत्र कोड और डिलीवरी बिंदु। यूनाइटेड किंगडम और नीदरलैंड इसके उत्कृष्ट उदाहरण हैं: शुरुआती खंड किसी ज़िले या कस्बे की पहचान करता है, और अंतिम खंड किसी सड़क या पतों के छोटे समूह तक सीमित कर देता है।
एक पांचवीं श्रेणी भी उतनी ही मायने रखती है: ऐसे देश और क्षेत्र जिनमें पोस्टल कोड प्रणाली ही नहीं है। वहां पोस्टल कोड मांगना कोई सत्यापन समस्या नहीं है, बल्कि ऐसा सवाल है जो पूछा ही नहीं जाना चाहिए था।
किन देशों में पोस्टल कोड नहीं होते?
कई देशों में नहीं होते, और उनमें ऐसी जगहें भी शामिल हैं जहां लोग आम तौर पर डाक भेजते हैं। जहां डाक प्रणाली नहीं है, वहां जो फ़ॉर्म अनिवार्य रूप से कोई मान मांगता है, वह उपयोगकर्ता को मजबूर करता है कि वह कोई मान गढ़ ले — और लगभग हमेशा गढ़ा जाने वाला मान शून्यों की श्रृंखला या किसी एक अंक की पुनरावृत्ति होती है। नतीजा ऐसा डेटाबेस होता है जो प्लेसहोल्डर मानों से भरा होता है; वे डेटा जैसे दिखते हैं पर कोई जानकारी नहीं रखते।
व्यावहारिक जवाब दो हिस्सों में है। पहला, जो भी फ़ॉर्म एक से अधिक देशों की सेवा करता है, उसमें इस फ़ील्ड को वैकल्पिक रखें, क्योंकि वैकल्पिकता ही एकमात्र ऐसा नियम है जो हर जगह सही है। दूसरा, यदि कोई आगे की प्रणाली सचमुच कोई मान मांगती है, तो एक स्पष्ट प्लेसहोल्डर बनाएं और डेटासेट नोट्स में यह लिख दें कि वह प्लेसहोल्डर है, बजाय यह दिखाने के कि वह असली कोड है। आप जिन बाज़ारों की सेवा करते हैं, उनके लिए देश पृष्ठ यह देखने का तेज़ रास्ता है कि कहां कौन सी परंपरा लागू होती है।
शुरुआती शून्य क्यों गायब हो जाते हैं
पोस्टल कोड एक पहचानकर्ता है, कोई संख्या नहीं। पहचानकर्ताओं की तुलना, जोड़, क्रमबद्धता और नकल होती है — कभी जोड़ नहीं, कभी औसत नहीं, कभी बड़े-से-बड़ा चिह्न से तुलना नहीं। फिर भी पोस्टल कॉलम को पूर्णांक के रूप में रखना बेहद आम है, और यही एक फ़ैसला उन शुरुआती शून्यों को नष्ट कर देता है जिन पर कई राष्ट्रीय योजनाएं निर्भर करती हैं।
नुकसान चुपचाप होता है। शून्य से शुरू होने वाला कोड जब किसी संख्यात्मक कॉलम, स्प्रेडशीट, JSON संख्या फ़ील्ड या ऐसी प्रणाली से गुज़रता है जो महत्वहीन अंक हटा देती है, तो वह छोटा कोड बन जाता है। कोई त्रुटि नहीं होती। मान बस वह कोड रह ही नहीं जाता जो वह था, और बाद में पोस्टल खोज ऐसे कारणों से विफल होती है जो उस आयात से जुड़े दिखते ही नहीं जिसने यह गड़बड़ की।
यही तर्क विभाजकों पर भी लागू होता है। कुछ राष्ट्रीय प्रारूप परंपरा से खंडों के बीच एक स्थान के साथ लिखे जाते हैं, और उपयोगकर्ता उन्हें असंगत तरीके से लिखते हैं। या तो विभाजक के बिना मानक रूप संग्रह करें, या विभाजक को लगातार संग्रह करें, पर सामान्यीकरण सीमा पर करें और उसके बाद उसे छूना बंद कर दें।
क्या पोस्टल कोड और प्रशासनिक क्षेत्र एक ही चीज़ हैं?
नहीं, और यह भ्रम असली बग पैदा करता है। पोस्टल कोड एक डिलीवरी मार्ग का वर्णन करता है, सरकारी सीमा का नहीं। डिलीवरी क्षेत्र और प्रशासनिक क्षेत्र एक दूसरे पर चढ़ते तो हैं, पर मेल नहीं खाते: एक पोस्टल कोड दो कस्बों के हिस्सों को समेट सकता है, और एक कस्बा कई कोडों में फैल सकता है। मार्ग बदलने पर कोड फिर से सौंपे जाते हैं, बिना किसी प्रांत की सीमा दोबारा खींचे।
इसका मतलब है कि आप पोस्टल कोड से किसी शहर या क्षेत्र का निष्कर्ष निश्चितता के साथ नहीं निकाल सकते। आप पोस्टल कोड को कमज़ोर साक्ष्य की तरह इस्तेमाल कर सकते हैं — वह आम तौर पर किसी क्षेत्र की ज्ञात सीमा के भीतर पड़ता है, और किसी क्षेत्र तथा पोस्टल कोड के बीच का असंगत मेल यह मज़बूत संकेत देता है कि इन दोनों में से कम से कम एक गलत लिखा गया है। इसे चलाने योग्य जांच मानें, आधिकारिक खोज नहीं।
यही वजह है कि कुछ देशों में अच्छी तरह काम करने वाला उपसर्ग आधारित सत्यापन दूसरी जगह नहीं चलता। उपसर्ग नियम किसी डिलीवरी भूगोल को दर्ज करता है, और हर देश का डिलीवरी भूगोल अलग है। बड़ा चित्र पता सत्यापन और सामान्यीकरण वाली गाइड में समझाया गया है।
असली फ़ॉर्म में पोस्टल कोड
कुछ आदतें फ़ॉर्म को सभी देशों में ईमानदार बनाए रखती हैं।
- जब तक किसी विशेष देश के लिए यह पक्का न हो कि कोड मौजूद है और अनिवार्य है, फ़ील्ड को वैकल्पिक रखें।
- चुने गए देश के साथ लेबल और सहायक पाठ बदलें, क्योंकि वैध कोड का आकार एक जगह से दूसरी जगह नहीं जाता।
- इनपुट पर कोड के स्थान सहित और स्थान रहित दोनों रूप स्वीकार करें, और संग्रह के लिए किसी एक रूप में सामान्यीकरण करें।
- वैश्विक स्तर पर तय लंबाई लागू न करें। तय लंबाई तभी उचित है जब देश पता हो।
- यदि किसी अन्य प्रणाली में योजना केस संवेदी है, तो चुपचाप बड़े अक्षरों में न बदलें; एक मानक केस तय करें और उसे लगातार लागू करें।
एक ही अंक श्रृंखला एक देश के नियम से पास होकर दूसरे से विफल होने का काम किया हुआ उदाहरण अमेरिकी पता संरचना वाली गाइड में है, जहां पांच अंकों वाले और विस्तारित रूपों का वर्णन है।
डेवलपर्स के लिए: कॉलम, बाधाएं और देश बदलना
पोस्टल कोड को पाठ के रूप में, उदार आकार में संग्रह करें, और पूरे रास्ते में कहीं भी संख्यात्मक रूपांतरण न होने दें। सामान्य उपयोग की हर योजना के लिए आठ से बारह अक्षर आरामदायक रहते हैं, और बाद में किए जाने वाले माइग्रेशन की तुलना में यह अतिरिक्त जगह कुछ भी खर्च नहीं करती। इनपुट पर आसपास के खाली स्थान हटाएं, तय करें कि भीतरी स्थान रखने हैं या नहीं, और यह फ़ैसला कोड में एक ही जगह लागू करें, हर उपभोक्ता में नहीं।
देश कोड को हमेशा पोस्टल कोड के पास रखें। देश के बिना पोस्टल कोड अस्पष्ट होता है, और उस पर सत्यापन नियमों का कोई एक समूह लागू नहीं होता। जब उपयोगकर्ता इंटरफ़ेस में देश बदले, तो पोस्टल फ़ील्ड को साफ़ करें या दोबारा सत्यापित करें, ऐसा मान छोड़कर न जाएं जिसकी जांच पिछले देश के नियमों पर हुई थी।
अंत में, बदलाव के लिए तैयार रहें। प्रारूप बढ़ते हैं, नए कोड आते हैं, और आज तय दिखने वाली योजना कल कोई नया रूप ले सकती है। सत्यापन नियम इतना सख्त होना चाहिए कि स्पष्ट टाइपिंग गलतियां पकड़ ले, और इतना ढीला कि ऐसा प्रारूप स्वीकार कर ले जिसका आपने अनुमान न लगाया हो। जब कोई कोड सत्यापन में विफल हो, तो अस्वीकार किया गया मान दर्ज करें — पूरा रिकॉर्ड कभी नहीं — ताकि आप खराब नियम और खराब इनपुट में फ़र्क कर सकें।
आगे के कदम
अपने स्कीमा में एक पोस्टल कॉलम की जांच करें और देखें कि वह पाठ है या नहीं, शुरुआती शून्य सहता है या नहीं, और देश कोड उसके साथ चलता है या नहीं। फिर एक छोटा फ़िक्स्चर सेट बनाएं जिसमें केवल अंकों वाला देश, अक्षर और अंक वाला देश, खंडों में बंटा कोड, और बिना पोस्टल प्रणाली वाला देश शामिल हों, और उसे अपने फ़ॉर्म से गुज़ारें। पता जनरेटर हर उस देश के स्थानीय आकार में कोड बनाता है जिसे वह कवर करता है, जिससे वह फ़िक्स्चर सेट जल्दी तैयार हो जाता है। फ़िक्स्चर के लिए बनाए गए कोड रचना से ही काल्पनिक होते हैं: वे प्रारूप को चलाते हैं पर किसी असली डिलीवरी क्षेत्र की ओर इशारा नहीं करते, और उनमें से कोई भी पार्सल पर नहीं जाना चाहिए।