מהו הכלי הזה?
עבור טקסט ASCII פשוט (אותיות אנגליות, ספרות, סימני פיסוק בסיסיים), ספירת התווים וספירת הבייטים הן אותו מספר — כל תו תופס בדיוק בייט אחד ב-UTF-8. ברגע שהטקסט כולל אותיות עם סימני ניקוד, תווים סיניים/יפניים/קוריאניים, קירילית, ערבית, אימוג'י או רוב התווים האחרים שאינם ASCII, זה כבר לא נכון: תו בודד יכול לתפוס 2, 3 או 4 בייטים ב-UTF-8, ו-2 או 4 בייטים ב-UTF-16.
לכך יש חשיבות בכל מקום שבו למערכת יש מגבלה בבייטים ולא בתווים — הודעות SMS, גדלי עמודות במסדי נתונים, מגבלות payload של API וכמה פלטפורמות חברתיות מודדות הכול בבייטים ולא בתווים, כך שאותו קטע טקסט עלול לחרוג בשקט ממגבלה בהתאם לשפה או לסמלים שהוא מכיל.
למה להשתמש בו?
- מציג ספירת תווים, בייטים ב-UTF-8 ובייטים ב-UTF-16 זה לצד זה.
- סופר נכון אימוג'י ותווים אחרים שמחוץ ל-Basic Multilingual Plane כתו אחד, לא שניים.
- מתעדכן בזמן אמת תוך כדי הקלדה — אין כפתור ללחוץ עליו.
- פועל כולו בדפדפן שלכם — ללא העלאה.
- חינם, ללא הרשמה, ללא הגבלות.
איך להשתמש
- הקלידו או הדביקו טקסט בתיבה.
- קראו את ספירת התווים, ספירת הבייטים ב-UTF-8 וספירת הבייטים ב-UTF-16 מתחת לה — הן מתעדכנות תוך כדי ההקלדה.
דוגמה
קלט
Hello, 世界! 🌍פלט
12 תווים, 19 בייטים ב-UTF-8, 26 בייטים ב-UTF-16החלק ה-ASCII ("Hello, " ו-"! ") תופס בייט אחד לתו ב-UTF-8. כל תו סיני תופס 3 בייטים, והאימוג'י תופס 4 בייטים — לכן ספירת הבייטים גבוהה באופן ניכר מספירת התווים.
שימושים נפוצים
- בדיקה האם תיאור מוצר רב-לשוני יתאים לעמודת מסד נתונים המוגדרת לפי אורך בבייטים ולא לפי ספירת תווים.
- הערכת ניצול מקטעי SMS, מכיוון ש-SMS מחויב ומחולק לפי גודל בבייטים, ולטקסט שאינו לטיני יש מגבלה שונה לכל מקטע.
- אימות שה-payload של API או שדה בטופס נשאר מתחת למגבלת גודל מבוססת בייטים לפני השליחה.
- הבנת הסיבה שמחרוזת ש"נראית קצרה" נדחית על ידי מערכת עם בדיקת אורך מבוססת בייטים.
שאלות נפוצות
מדוע ספירת התווים וספירת הבייטים אינן תואמות?
טקסט יוניקוד מאוחסן כבייטים, וכמות הבייטים הנדרשת לכל תו תלויה בקידוד ובתו עצמו. ב-UTF-8, תווי ASCII תופסים בייט אחד, רוב האותיות הלטיניות עם ניקוד וכן קירילית/יוונית/עברית/ערבית תופסות 2 בייטים, רוב תווי CJK תופסים 3 בייטים, ואימוג'י תופס בדרך כלל 4 בייטים. ספירת התווים פשוט סופרת סמלים, בלי להתייחס לאופן שבו הם מאוחסנים.
באיזו ספירת בייטים כדאי להשתמש עבור שדה עם מגבלת בייטים?
השתמשו בקידוד שהמערכת אכן משתמשת בו כדי לאחסן או להעביר את הטקסט — רוב ממשקי ה-API, מסדי הנתונים והקבצים המודרניים באינטרנט משתמשים ב-UTF-8, כך שספירת הבייטים ב-UTF-8 היא בדרך כלל הרלוונטית. מערכות ישנות יותר (כגון טיפול פנימי במחרוזות ב-Windows/Java) משתמשות ב-UTF-16.
האם הכלי הזה סופר אימוג'י כראוי?
כן. אימוג'י רבים מאוחסנים פנימית כזוג יחידות קוד "תחליף" (surrogate) ב-UTF-16, שאותן שיטות ספירה נאיביות סופרות כ-2 תווים. כלי זה סופר נכון נקודות קוד יוניקוד, כך שאימוג'י נספר כתו אחד, בהתאמה למספר התווים שאדם רואה בפועל.
האם זה אותו דבר כמו כלי מונה המילים?
לא — מונה המילים מתמקד בספירת מילים ומשפטים לצורכי כתיבה. כלי זה עוסק באופן ספציפי בגודל בבייטים לעומת ספירת תווים, מה שחשוב למגבלות טכניות ולא לדרישות ספירת מילים.
האם הטקסט שלי מועלה לאיזשהו מקום?
לא. הספירה מתבצעת מקומית בדפדפן שלכם באמצעות מקודד הטקסט המובנה של JavaScript; שום דבר לא נשלח לשרת.