CodeKitHub
أدوات النصوص

عداد البايتات — عدد الأحرف مقابل حجم البايتات

آخر تحديث:

اكتب أو الصق نصًا وشاهد مباشرةً عدد الأحرف التي يحتويها مقارنةً بعدد البايتات التي يشغلها فعليًا بترميز UTF-8 وUTF-16 — يتباعد الرقمان بمجرد ظهور أحرف غير ASCII (علامات التشكيل، نصوص CJK، الرموز التعبيرية).

0
الأحرف
0
بايتات UTF-8
0
بايتات UTF-16

ما هي هذه الأداة؟

بالنسبة للنص اللاتيني البسيط (الحروف الإنجليزية، الأرقام، علامات الترقيم الأساسية)، يتساوى عدد الأحرف مع عدد البايتات — يشغل كل حرف بالضبط بايتًا واحدًا في UTF-8. بمجرد أن يتضمن النص حروفًا مُشكَّلة أو أحرف صينية/يابانية/كورية أو سيريلية أو عربية أو رموزًا تعبيرية أو معظم الأحرف الأخرى غير ASCII، يتوقف هذا عن الصحة: يمكن أن يشغل الحرف الواحد 2 أو 3 أو 4 بايتات في UTF-8، وبايتين أو 4 بايتات في UTF-16.

هذا مهم كلما كان النظام يفرض حدًا بالبايت وليس بالحرف — رسائل SMS، وأحجام أعمدة قواعد البيانات، وحدود حمولة واجهات برمجة التطبيقات (API)، وبعض المنصات الاجتماعية، كلها تقيس بالبايت وليس بالحرف، لذا يمكن للنص نفسه أن يتجاوز الحد بصمت حسب اللغة أو الرموز التي يحتوي عليها.

لماذا تستخدمها؟

  • يعرض عدد الأحرف وبايتات UTF-8 وبايتات UTF-16 جنبًا إلى جنب.
  • يحسب بشكل صحيح الرموز التعبيرية والأحرف الأخرى خارج المستوى الأساسي متعدد اللغات كحرف واحد وليس حرفين.
  • يتحدث مباشرةً أثناء الكتابة — لا حاجة للضغط على أي زر.
  • يعمل بالكامل داخل متصفحك — بدون رفع.
  • مجانية، بدون تسجيل، بدون حدود.

كيفية الاستخدام

  1. اكتب أو الصق النص في المربع.
  2. اقرأ عدد الأحرف وعدد بايتات UTF-8 وعدد بايتات UTF-16 أسفله — تتحدث هذه القيم أثناء الكتابة.

مثال

الإدخال

Hello, 世界! 🌍

الناتج

12 حرفًا، 19 بايت بترميز UTF-8، 26 بايت بترميز UTF-16

الجزء اللاتيني («Hello, » و«! ») يشغل بايتًا واحدًا لكل حرف في UTF-8. كل حرف صيني يشغل 3 بايتات، والرمز التعبيري يشغل 4 بايتات — لهذا السبب تكون أعداد البايتات أعلى بشكل ملحوظ من عدد الأحرف.

استخدامات شائعة

  • التحقق مما إذا كان وصف منتج متعدد اللغات سيتناسب مع عمود قاعدة بيانات مُعرَّف بطول البايت بدلاً من عدد الأحرف.
  • تقدير استخدام مقاطع الرسائل النصية القصيرة (SMS)، حيث تُحاسَب وتُقسَّم الرسائل النصية حسب حجم البايت، ويستخدم النص غير اللاتيني حدًا مختلفًا لكل مقطع.
  • التحقق من أن حمولة واجهة برمجة تطبيقات أو حقل نموذج يبقى ضمن حد حجم قائم على البايت قبل الإرسال.
  • فهم سبب رفض نظام يحتوي على فحص طول قائم على البايت لسلسلة نصية «تبدو قصيرة».

الأسئلة الشائعة

لماذا لا يتطابق عدد الأحرف مع عدد البايتات؟

يُخزَّن نص Unicode كبايتات، وعدد البايتات التي يحتاجها كل حرف يعتمد على الترميز وعلى الحرف نفسه. في UTF-8، تشغل أحرف ASCII بايتًا واحدًا، ومعظم الحروف اللاتينية المُشكَّلة والسيريلية/اليونانية/العبرية/العربية تشغل بايتين، ومعظم أحرف CJK تشغل 3 بايتات، وعادةً ما تشغل الرموز التعبيرية 4 بايتات. عدد الأحرف يحسب الرموز فقط، بغض النظر عن كيفية تخزينها.

أي عدد بايتات يجب أن أستخدمه لحقل محدود بالبايت؟

استخدم الترميز الذي يستخدمه النظام فعليًا لتخزين النص أو نقله — معظم واجهات برمجة تطبيقات الويب الحديثة وقواعد البيانات والملفات تستخدم UTF-8، لذا فإن عدد بايتات UTF-8 هو عادةً الرقم ذو الصلة. بعض الأنظمة الأقدم (مثل معالجة السلاسل النصية الداخلية في ويندوز/Java) تستخدم UTF-16.

هل يحسب هذا الرموز التعبيرية بشكل صحيح؟

نعم. تُخزَّن العديد من الرموز التعبيرية داخليًا كزوج من وحدات ترميز «بديلة» بنظام UTF-16، والتي تحسبها طرق العد البسيطة كحرفين. تحسب هذه الأداة نقاط ترميز Unicode بشكل صحيح، لذا يُحسب الرمز التعبيري كحرف واحد، بما يتطابق مع عدد الأحرف التي يراها الشخص فعليًا.

هل هذا مثل أداة عداد الكلمات؟

لا — يركز عداد الكلمات على عدد الكلمات والجمل للكتابة. أما هذه الأداة فتتعلق تحديدًا بحجم البايت مقابل عدد الأحرف، وهو أمر مهم للحدود التقنية وليس لمتطلبات عدد الكلمات.

هل يُرفع نصي إلى أي مكان؟

لا. يتم العد محليًا في متصفحك باستخدام مُرمِّز النص المدمج في JavaScript؛ ولا يُرسل شيء إلى أي خادم.