BOM
BOM - או byte-order mark (סימן סדר-סיביות) הוא תו היוניקוד שערכו U+FEFF המופיע לרוב בתחילת מסמך או קובץ (באופן שאינו נראה לקורא האנושי בדרך כלל), ומטרתו לסמן אם התוכן המקודד שבהמשך הוא מסדר big-endian או מסדר little-endian - שתי אפשרויות שונות לקריאת הקידוד במסגרת הקידוד UTF-16. כמו כן, הסימן משמש גם להבחנה בין הקידודים UTF-8, UTF-16 ו-UTF-32.
כאמור, בקידוד UTF-8 אין שום משמעות לסימן, מלבד סימון הטקסט כבעל קידוד זה; סדר הסיביות בפענוח UTF-8 הוא תמיד זהה. באופן עקרוני, חתימה זו אמורה להיות בלתי-נראית, אם כי לעיתים מדווחות תקלות (נפוצות) בקריאת התו על ידי דפדפנים שונים באינטרנט (פירוט להלן). מאחר ש-UTF-8 הוא קידוד היוניקוד הנפוץ ברשת, מוטב שלא להוסיף את תו ה-BOM; עם זאת, תוכנות רבות במערכת ההפעלה חלונות (כמו למשל Notepad) מוסיפות את הסימן הזה, לצורך זיהוי עצמי של הקובץ כמקודד בקידוד זה.
תקלות נפוצות בעקבות שימוש ב-BOM
- בדפדפנים רבים שלא יודעים להתמודד היטב עם UTF-8 נוצרת שורה מיותרת בתחילת הדף המוצג, שמהווה פירוש לא נכון של תו ה-BOM[1].
- בדפדפנים ובעורכי טקסט רבים הסימן מפורש לא נכון ומופיע בצורה הבאה: "", ולעיתים בצורות דומות נוספות.
- הסימן מופיע בראשית הקובץ, ולכן מפריע לעיתים קרובות בשליחת "headers", כלומר, מידע מותאם אישית שהשרת, לרוב על ידי שפת תיווך כמו PHP, מנסה לשלוח לדפדפן לפני התוכן (כמו למשל עוגיות)
- מהדרים של שפות תכנות שונות (כמו javac של Java), אינם יודעים להתייחס לסימן נכונה, ומכשילים הידור של קובץ בשל הימצאות סימן זה בתחילתו.
הפתרון לכל הבעיות האלו, הוא שמירת הקובץ ללא BOM באמצעות עורכי טקסט המאפשרים שמירה בUTF-8 ללא BOM.
קישורים חיצוניים
- The Unicode Standard, פרק 13 (סעיף 13.6) [אנגלית]
- שאלות נפוצות על UTF ועל BOM באתר unicode.org
הערות שוליים
- ^ The byte-order mark (BOM) in HTML, באתר W3C, הסברים על ההשפעה של BOM על דפי אינטרנט, עודכן ב 31-ינואר-2013 (באנגלית)