BOM – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
DSisyphBot (שיחה | תרומות)
מ r2.7.2) (בוט מוסיף: simple:Byte order mark
MerlIwBot (שיחה | תרומות)
מ בוט מסיר: simple:Byte order mark (deleted)
שורה 30: שורה 30:
[[pt:Marca de ordem de byte]]
[[pt:Marca de ordem de byte]]
[[ru:Byte order mark]]
[[ru:Byte order mark]]
[[simple:Byte order mark]]
[[sv:Byte order mark]]
[[sv:Byte order mark]]
[[uk:Маркер порядку байтів]]
[[uk:Маркер порядку байтів]]

גרסה מ־10:56, 31 באוקטובר 2012

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.

קישורים חיצוניים