BOM

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

BOM - או byte-order mark (סימן סדר-סיביות) הוא תו היוניקוד שערכו U+FEFF המופיע לרוב בתחילת מסמך או קובץ, ומטרתו לסמן אם התוכן המקודד שבהמשך הוא מסדר big-endian או מסדר little-endian - שתי אפשרויות שונות לקריאת הקידוד במסגרת הקידוד UTF-16. כמו כן, הסימן משמש גם להבחנה בין הקידודים UTF-8, UTF-16 ו-UTF-32.

כאמור, בקידוד UTF-8 אין שום משמעות לסימן, מלבד סימון הטקסט כבעל קידוד זה; סדר הסיביות בפענוח UTF-8 הוא תמיד זהה. [1] באופן עקרוני, חתימה זו אמורה להיות בלתי-נראית, אם כי לעתים מדווחות תקלות (נפוצות) בקריאת התו על ידי דפדפנים שונים באינטרנט (פירוט להלן). מאחר ש-UTF-8 הוא קידוד היוניקוד הנפוץ ברשת, מוטב שלא להוסיף את תו ה-BOM; עם זאת, תוכנות רבות במערכת ההפעלה חלונות (כמו למשל Notepad) מוסיפות את הסימן הזה, לצורך זיהוי עצמי של הקובץ כמקודד בקידוד זה.

תקלות נפוצות בעקבות שימוש ב-BOM[עריכת קוד מקור | עריכה]

  • בדפדפנים רבים שלא יודעים להתמודד היטב עם UTF-8 נוצרת שורה מיותרת בתחילת הדף המוצג, שמהווה פירוש לא נכון של תו ה-BOM (למשל: [2])
  • בדפדפנים ובעורכי טקסט רבים הסימן מפורש לא נכון ומופיע בצורה הבאה: "", ולעתים בצורות דומות נוספות.
  • הסימן מופיע בראשית הקובץ, ולכן מפריע לעתים קרובות בשליחת "headers", כלומר, מידע מותאם אישית שהשרת, לרוב על ידי שפת תיווך כמו PHP, מנסה לשלוח לדפדפן לפני התוכן (כמו למשל עוגיות)
  • מהדרים של שפות תכנות שונות (כמו javac של Java), אינם יודעים להתייחס לסימן נכונה, ומכשילים הידור של קובץ בשל הימצאות סימן זה בתחילתו.

הפתרון לכל הבעיות האלו, הוא שמירת הקובץ ללא BOM באמצעות עורכי טקסט המאפשרים שמירה בUTF-8 ללא BOM.

קישורים חיצוניים[עריכת קוד מקור | עריכה]