סייר Unicode
חיפוש תווים, קודי Unicode, ואמוג׳י עם קטגוריות
מה זה Unicode?
Unicode הוא תקן בינלאומי שמקצה לכל תו בעולם מספר ייחודי — codepoint. הוא מכסה את כל האלפביתים (עברית, ערבית, סינית, קירילית), סמלים מתמטיים, אמוג׳י, ועוד כ-150,000 תווים בגרסאות העדכניות (2025).
לדוגמה, האות א היא Unicode U+05D0 (בעשרוני: 1488). זהה בכל מערכת הפעלה, בכל שפת תכנות, בכל פונט.
Unicode לעומת UTF-8
הבחנה חשובה: Unicode הוא התקן (המספר שמקבל כל תו). UTF-8 הוא קידוד — דרך לאחסן את המספרים האלה כבייטים. תו עברי ב-UTF-8 תופס 2 בייטים, אמוג׳י תופס 4. זו הסיבה ש-length של מחרוזת ב-JavaScript לא תמיד שווה למספר התווים שהמשתמש רואה.
עברית ב-Unicode
אותיות עבריות יושבות בטווח U+05D0 עד U+05EA (א עד ת). ניקוד יושב ב-U+05B0 עד U+05BD. אותיות סופיות (ך ם ן ף ץ) יושבות כתווים נפרדים. חשוב: ב-regex, \\w לא תופס עברית כברירת מחדל. צריך או [\u05D0-\u05EA] או flag u עם \\p{Script=Hebrew}.
אמוג׳י זה Unicode
כל אמוג׳י הוא codepoint סטנדרטי. 😀 זה U+1F600. אמוג׳י מורכבים (כמו 👨👩👧 — משפחה) הם רצפים של codepoints מחוברים ב-Zero-Width Joiner (U+200D). זו הסיבה ש-"👨👩👧".length === 8 ב-JavaScript.
למה דוגמאות שימוש
- באגים ב-DB: שם משתמש עם תו שלא אמור להיות שם (space סמוי, BOM) — הכלי יחשוף
- Regex לעברית: לבנות תבנית שתופסת רק אותיות עברית
- I18N: להבין למה אותו טקסט "נשבר" בדפדפן אחד ועובד באחר
- התמודדות עם RTL: תווים כמו
U+200E(LTR mark) ו-U+200F(RTL mark) קובעים כיוון טקסט