حروف گنیں
اسپیس کے ساتھ اور بغیر، ساتھ میں بائٹس کی وہ گنتی جو آپ کا ڈیٹا بیس اور SMS گیٹ وے اصل میں ناپتے ہیں۔ یہاں ایموجی ایک حرف گنا جاتا ہے، کیونکہ وہ ہے ہی ایک۔
- کبھی محفوظ نہیں کی جاتی
- نہ قطار، نہ انتظار
- نہ سائن اپ، نہ واٹر مارک
0
حروف
جو انسان کو نظر آتا ہے
0
اسپیس کے بغیر
خالی جگہیں شامل نہیں
0
الفاظ
کوئی بھی زبان
0
UTF-8 بائٹس
جو ڈیٹا بیس گنتا ہے
- لائنیںجیسے ایڈیٹر انہیں نمبر دیتا ہے
- 0
- جملے“Dr.” یا “etc.” پر جملہ نہیں ٹوٹتا
- 0
- پیراگرافخالی لائن سے الگ کیے گئے حصے
- 0
- کوڈ پوائنٹسجنہیں ریگولر ایکسپریشن کا “.” میچ کرتا ہے
- 0
- UTF-16 یونٹسجو JavaScript میں string.length بتاتا ہے
- 0
- UTF-8 بائٹسجو VARCHAR کی حد اور HTTP ہیڈرز ناپتے ہیں
- 0
- پڑھنے کا وقتخاموشی سے، 238 الفاظ فی منٹ
- —
- بولنے کا وقتبلند آواز سے، 150 الفاظ فی منٹ
- —
- سب سے لمبا لفظحروف کے حساب سے، بائٹس کے نہیں
- —
- اوسط لفظپڑھنے میں آسانی کا ایک موٹا اندازہ
- —
ٹائپ کرنا شروع کریں، سب کچھ خود بھر جائے گا۔ کوئی ایموجی یا چینی زبان کا ایک جملہ آزمائیں — دونوں ویسے ہی گنے جاتے ہیں جیسے انسان گنتا ہے، جس میں زیادہ تر کاؤنٹرز غلطی کرتے ہیں۔
یہ کیسے کام کرتا ہے
پیسٹ کریں یا لکھیں
گنتی ساتھ ساتھ اپ ڈیٹ ہوتی ہے۔ کچھ بھی محفوظ نہیں کیا جاتا۔
اپنی ضرورت کی گنتی چنیں
حروف، اسپیس کے بغیر حروف، کوڈ پوائنٹس یا UTF-8 بائٹس — ہر ایک دکھایا جاتا ہے، ساتھ یہ بھی کہ اسے کون استعمال کرتا ہے۔
اپنی حد پر نظر رکھیں
SEO ٹائٹلز، میٹا ڈسکرپشنز، SMS حصے اور 255 بائٹ کی فیلڈ، سب کو آپ کی لکھی ہوئی تحریر کے مقابلے میں ٹریک کیا جاتا ہے۔
چار نمبرز، کیونکہ “حرف” کے چار مطلب ہیں
فیملی والا ایموجی لیں، یا اسکن ٹون والا انگوٹھا۔ انسان کو ایک حرف نظر آتا ہے۔ یہ کئی کوڈ پوائنٹس سے بنا ہے جو نظر نہ آنے والے جوڑوں سے جڑے ہیں، اس لیے ریگولر ایکسپریشن کو سات نظر آتے ہیں۔ JavaScript ٹیکسٹ کو 16-بٹ یونٹس میں رکھتا ہے اور بنیادی رینج سے باہر کی ہر چیز ان میں سے دو لیتی ہے، اس لیے وہ گیارہ بتاتا ہے۔ ڈیٹا بیس کالم کے لیے UTF-8 میں انکوڈ کیا جائے تو یہ پچیس بائٹس لیتا ہے۔ ان میں سے کوئی نمبر غلط نہیں اور کوئی بھی واحد جواب نہیں — درست نمبر مکمل طور پر اس پر منحصر ہے کہ حد کون لگا رہا ہے۔
اس لیے عملی سوال یہ ہے کہ حد کس نے لگائی۔ ڈیٹا بیس کالم جو VARCHAR کے طور پر بنایا گیا ہو، زیادہ تر انجنز میں بائٹس گنتا ہے، اسی لیے جو فیلڈ انگریزی کے 255 حروف قبول کرتی ہے وہ جاپانی کے اس سے کہیں کم حروف پر انکار کر دیتی ہے۔ SMS اپنی سات بٹ والی حروفِ تہجی میں 160 حروف کا ہوتا ہے، اور جیسے ہی کوئی ایک حرف اس سے باہر ہو، فی میسج 70 رہ جاتا ہے — ایک خمدار کوٹ یا ایموجی ایک میسج کو تین بنا سکتا ہے۔ JavaScript میں فارم ویلیڈیٹر تقریباً ہمیشہ UTF-16 یونٹس گنتا ہے، اسی لیے 280 حروف کی حد والی فیلڈ ایموجی سے بھری بظاہر چھوٹی تحریر کو بھی رد کر سکتی ہے۔
پڑھنے والے کو جو نظر آتا ہے، اس کی گنتی سب سے مشکل ہے اور یہ براؤزر کی اپنی ٹیکسٹ سیگمنٹیشن سے ہوتی ہے — وہی نظام جو طے کرتا ہے کہ بائیں تیر کا بٹن دبانے پر کرسر کہاں جائے گا۔ انسان کو محسوس ہونے والی ہر چیز کے لیے “ایک حرف” کی یہی درست تعریف ہے، اور یہ ان صورتوں کو سنبھالتی ہے جن میں سادہ گنتی لڑکھڑا جاتی ہے: بنیادی حرف اور combining mark سے لکھا گیا اعراب والا حرف ایک ہے، اور ہندی اور تھائی کے مجموعے اسی طرح گنے جاتے ہیں جیسے ان رسم الخط کا قاری گنے گا۔
عام انگریزی تحریر میں چاروں نمبرز بالکل ایک جیسے ہوتے ہیں، اسی لیے یہ مسئلہ تب تک نظر نہیں آتا جب تک سامنے نہ آ جائے۔ یہ ایموجی، اعراب والے اور combining حروف، غیر لاطینی رسم الخط اور ریاضیاتی علامات پر الگ ہو جاتے ہیں — اور یہی وہ ان پٹس ہیں جن کی وجہ سے ڈیٹا بیس بننے کے تین مہینے بعد کوئی فیلڈ خاموشی سے کٹ جاتی ہے۔
جب آپ کو کچھ اور چاہیے
کوڈ میں ڈیفالٹ length کے بجائے ایسا فنکشن استعمال کریں جو وہی گنے جس کی آپ کو ضرورت ہے۔ JavaScript میں Intl.Segmenter وہ گنتا ہے جو قاری کو نظر آتا ہے؛ Python 3 کی strings کوڈ پوائنٹس گنتی ہیں اور len(s.encode("utf-8")) بائٹس گنتا ہے؛ PHP میں بالکل اسی فرق کے لیے mb_strlen اور strlen ہیں۔ زیادہ تر زبانوں میں ڈیفالٹ وہی ہوتا ہے جو زبان کو آسان لگا، جو شاذ ہی وہ ہوتا ہے جو آپ کی حد کا مطلب ہے۔
جب رکاوٹ ڈیٹا بیس فیلڈ ہو تو پائیدار حل اس سے پہلے کے مرحلے میں ہے۔ MySQL میں کالم کو utf8mb4 یا PostgreSQL میں text کے طور پر بنانے سے کٹنے والے بگز کی پوری قسم ختم ہو جاتی ہے — MySQL کا پرانا utf8 مشہور طور پر فی حرف صرف تین بائٹس کا ہے اور ایموجی بالکل محفوظ نہیں کر سکتا۔ فارم پر احتیاط سے گننا اس کالم کا عارضی حل ہے جسے شروع سے مختلف طریقے سے بنانا چاہیے تھا۔
اکثر پوچھے جانے والے سوالات
کیا میرا ٹیکسٹ کہیں محفوظ کیا جاتا ہے؟
نہیں۔ کچھ بھی محفوظ نہیں کیا جاتا اور کوئی ریکوئسٹ نہیں بھیجی جاتی، اور یہ نیٹ ورک بند ہونے پر بھی کام کرتا رہتا ہے۔ ٹیکسٹ کے لیے یہ جتنا لگتا ہے اس سے زیادہ اہم ہے: لوگ آن لائن کاؤنٹر میں جو پیسٹ کرتے ہیں وہ غیر شائع شدہ تحریریں، قانونی مسودے، طلبہ کا کام اور اندرونی دستاویزات ہوتی ہیں۔
حروف کی چار مختلف گنتیاں کیوں ہیں؟
کیونکہ “حرف” کے چار مختلف مطلب ہیں اور زیادہ تر ٹولز صرف ایک جانتے ہیں۔ جو چیز آپ کو ایک حرف دکھائی دیتی ہے وہ grapheme cluster ہے — “é”، “🎉” اور یہاں تک کہ “👨👩👧👦” بھی ہر ایک، ایک ہے۔ JavaScript کا string.length جو بتاتا ہے وہ UTF-16 کوڈ یونٹس ہیں، جن میں وہ فیملی ایموجی 11 ہے۔ ریگولر ایکسپریشن جو میچ کرتا ہے وہ کوڈ پوائنٹس ہیں، جن میں یہ 7 ہے۔ اور ڈیٹا بیس کالم یا HTTP ہیڈر جو ناپتا ہے وہ UTF-8 بائٹس ہیں، جن میں یہ 25 ہے۔ یہاں چاروں دکھائے جاتے ہیں، کیونکہ آپ کو کون سا چاہیے یہ اس پر منحصر ہے کہ حد کون لگا رہا ہے۔
ایک ایموجی کتنے حروف کا ہوتا ہے؟
یہاں ایک — کیونکہ پڑھنے والے کے لیے یہ یہی ہے، اور جدید پلیٹ فارم پر حروف کی حد یہی گنتی ہے۔ دوسری جگہوں پر یہ 2، 7 یا 11 ہو سکتا ہے: “👨👩👧👦” چار لوگ ہیں جو تین نظر نہ آنے والے joiner حروف سے جڑے ہیں، اس لیے یہ 7 کوڈ پوائنٹس اور ان یونٹس میں سے 11 ہے جو JavaScript کا string.length گنتا ہے۔ اگر کسی فارم نے آپ کی تحریر کو بہت لمبا کہہ کر رد کر دیا حالانکہ وہ کافی چھوٹی لگ رہی تھی، تو عموماً وجہ یہی ہوتی ہے، اور اس صفحے پر بائٹس کی گنتی آپ کو اصل سائز دکھا دے گی۔
میری 200 حروف کی تحریر 255 حروف والی ڈیٹا بیس فیلڈ میں کیوں ناکام ہوئی؟
کیونکہ وہ فیلڈ تقریباً یقینی طور پر حروف نہیں بلکہ بائٹس کی حد رکھتی ہے۔ UTF-8 میں انگریزی کے سادہ حروف ایک ایک بائٹ لیتے ہیں، لیکن اعراب والے حروف دو، اور چینی، جاپانی، عربی اور ایموجی تین یا چار لیتے ہیں۔ اس لیے جاپانی کے 200 حروف 600 بائٹس ہیں۔ بائٹس کی گنتی یہاں بالکل اسی وجہ سے دکھائی جاتی ہے — یہی وہ نمبر ہے جو آپ کا ڈیٹا بیس اصل میں چیک کر رہا ہے۔
ایک ایموجی میری SMS کی حد 160 سے 70 کیوں کر دیتا ہے؟
کیونکہ ٹیکسٹ میسج ایک مختصر 7-بٹ حروفِ تہجی استعمال کرتا ہے جس میں 160 حروف آتے ہیں — اور اس حروفِ تہجی میں نہ ایموجی ہیں، نہ خمدار کوٹس، اور تقریباً کوئی اعراب نہیں۔ اس سے باہر کا ایک حرف پورے میسج کو Unicode میں بدل دیتا ہے، اور حد 70 رہ جاتی ہے۔ Word سے پیسٹ کیا گیا خمدار اپوسٹروفی بھی یہی کام اتنی ہی آسانی سے کر دیتا ہے جتنا ایموجی۔ اسی طرح ایک چھوٹے میسج کا بل تین میسجز کا بنتا ہے، اور جیسے ہی ایسا ہو، صفحہ آپ کو بتا دیتا ہے۔
کیا یہ اسپیس گنتا ہے؟
دونوں نمبرز ایک ساتھ دکھائے جاتے ہیں، اس لیے آپ کو چننا نہیں پڑتا۔ لائن بریکس اور ٹیبز بھی whitespace میں گنے جاتے ہیں۔
جاننا مفید ہے: چار نمبرز، کیونکہ “حرف” کے چار مطلب ہیں اور آپ کو کون سا چاہیے، یہ اس پر منحصر ہے کہ حد کون لگا رہا ہے۔ ڈیٹا بیس کا VARCHAR، UTF-8 بائٹس گنتا ہے، ریگولر ایکسپریشن کوڈ پوائنٹس گنتا ہے، JavaScript، UTF-16 یونٹس گنتا ہے، اور انسان وہ گنتا ہے جو اسے نظر آتا ہے۔ سب سے زیادہ اختلاف ایموجی پر ہوتا ہے۔
یہ ٹول اپنی ویب سائٹ پر لگائیں
کسی بھی بلاگ، کلاس پیج یا ہیلپ آرٹیکل کے لیے مفت۔ ایک اسنیپٹ پیسٹ کریں اور آپ کے وزیٹرز اسے سیدھا آپ کے صفحے پر استعمال کر سکیں گے۔
متعلقہ ٹولز
الفاظ گنیں
الفاظ، جملے اور پڑھنے کا وقت
ٹیکسٹ کا موازنہ کریں
دو ورژنز میں بالکل کیا بدلا، دیکھیں
کیس کنورٹر
UPPER، lower، Title Case، camelCase اور باقی
Base64 انکوڈ
ٹیکسٹ یا فائل کو Base64 میں بدلیں
ڈپلیکیٹ لائنیں ہٹائیں
دہرائی گئی لائنیں ہٹائیں، فہرست ترتیب دیں اور صاف کریں
HTML منیفائر
صفحہ خراب کیے بغیر HTML چھوٹا کریں