यह टूल क्या करता है
वर्ण गणक एन्कोडिंग के अलग माप दिखाता है: Unicode Code Points, दिखने वाले अक्षर समूह, UTF-16 Code Units और UTF-8 Bytes। इससे JavaScript के string.length को हर स्थिति में वास्तविक वर्ण संख्या मानने की गलती से बचा जा सकता है।
इस्तेमाल कैसे करें
- टेक्स्ट, emoji या संयुक्त उच्चारण चिह्न वाले वर्ण लिखें।
- कोड पॉइंट, खाली जगह रहित वर्ण और UTF-8 बाइट संख्या देखें।
- दिखने वाले अक्षर समूहों और UTF-16 कोड यूनिट की तुलना करें। ब्राउज़र अक्षर समूह विभाजन न कर सके तो स्पष्ट सूचना मिलेगी।
- अलग प्रस्तुतियों का अंतर जाँचने के लिए मूल टेक्स्ट कॉपी करें या उदाहरण लोड करें।
उदाहरण
- 😀 में 1 Unicode कोड पॉइंट, 2 UTF-16 कोड यूनिट और 4 UTF-8 बाइट हैं।
- 👨👩👧👦 में 7 Unicode कोड पॉइंट हैं। grapheme विभाजन उपलब्ध होने पर यह 1 दिखने वाला अक्षर समूह है।
- संयुक्त उच्चारण चिह्न वाला é और पहले से संयुक्त é आम तौर पर एक जैसे दिखते हैं, लेकिन पहले में 2 और दूसरे में 1 कोड पॉइंट है।
गिनती के नियम
वर्ण और Unicode Code Points, Array.from के समान कोड पॉइंट आधारित क्रमण से गिने जाते हैं। UTF-16 Code Units मूल स्ट्रिंग की लंबाई हैं और UTF-8 Bytes, TextEncoder से निकाले जाते हैं। दिखने वाले अक्षर समूहों के लिए Intl.Segmenter का grapheme मोड प्राथमिक है। इनपुट का Unicode सामान्यीकरण नहीं होता, इसलिए संयुक्त वर्णों की अलग एन्कोडिंग सुरक्षित रहती है। मूल नई पंक्ति वर्ण एन्कोडिंग की गिनती में आते हैं और अंत की नई पंक्ति एक खाली पंक्ति बनाती है। एक इनपुट की सीमा 2,000,000 UTF-16 कोड यूनिट है।
आम उपयोग
- API, फ़ाइल या संग्रहण फ़ील्ड के लिए UTF-8 आकार जाँचना।
- emoji के कारण लंबाई में आने वाले अंतर ढूँढना।
- दिखने वाले अक्षर, कोड पॉइंट और एन्कोडिंग इकाई का संबंध समझना।
गोपनीयता
टेक्स्ट, फ़ाइल पढ़ना, रूपांतरण और पूर्वावलोकन सभी इसी ब्राउज़र में स्थानीय रूप से होते हैं। इनपुट अपलोड नहीं होता; बैकएंड, डेटाबेस, ऑनलाइन API या तीसरे पक्ष का CDN इस्तेमाल नहीं होता और सामग्री अपने आप सहेजी नहीं जाती। कॉपी और डाउनलोड भी ब्राउज़र में स्थानीय रूप से होते हैं।
FAQ
एक emoji कितने वर्णों के बराबर है?
एक साधारण emoji एक कोड पॉइंट हो सकता है। परिवार, झंडे और त्वचा के रंग वाले संयोजनों में कई कोड पॉइंट हो सकते हैं। अक्षर समूहों की गिनती दिखने वाली संख्या के अधिक करीब है।
UTF-16 लंबाई वर्ण संख्या से अधिक क्यों हो सकती है?
Basic Multilingual Plane के बाहर के कोड पॉइंट दो UTF-16 surrogate इकाइयों की जोड़ी से बनते हैं। इसलिए एक कोड पॉइंट दो कोड यूनिट ले सकता है।
क्या UTF-8 Bytes फ़ाइल का आकार है?
यह वर्तमान टेक्स्ट को UTF-8 में एन्कोड करने पर मिलने वाली बाइट संख्या है। इसमें अतिरिक्त फ़ाइल हेडर, BOM या फ़ाइल सिस्टम की जानकारी शामिल नहीं है।
क्या स्पेस भी गिने जाते हैं?
सामान्य वर्ण संख्या में खाली जगह शामिल है। “खाली जगह के बिना वर्ण” में स्पेस, Tab, नई पंक्ति और अन्य Unicode रिक्त स्थान शामिल नहीं हैं।
Intl.Segmenter उपलब्ध न हो तो क्या होगा?
कोड पॉइंट, UTF-16 और UTF-8 की गणना जारी रहती है। अक्षर समूह वाले भाग में बताया जाएगा कि उनकी भरोसेमंद संख्या उपलब्ध नहीं है।