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