ISO 8859

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

ISO 8859, או ISO/IEC 8859 באופן רשמי יותר, הוא תקן לקידוד תווים ב־8 סיביות. התקן מכיל 15 חלקים (ממוספרים, למשל ISO 8859-2 לחלק השני) בהתאם לכתב הנוסף ללטינית בסיסית שבו כל תקן תומך.

ISO 8859 מבוסס על ASCII. תקן ASCII הוא קידוד בן 7 סיביות המקודד את האלפבית הלטיני הבסיסי (כלומר ללא אקצנטים) ומספרים וסימני פיסוק וכן תווי בקרה במספרים 0x00 עד 0x7F (בכתיב הקסדצימלי). כל החלקים של תקן ISO 8859 נאמנים לקידוד זה והם תואמים את ASCII ב־128 המקומות הראשונים שלהם. הם מרחיבים את ASCII בכך שהם מקצים תווים נוספים ל־128 המקומות הבאים, 0x80 עד 0xFF.

מבנה ISO 8859[עריכת קוד מקור | עריכה]

החלקים של ISO 8859 בנויים, עד כמה שאפשר, כך:

  • קודים 0x80 עד 0x9F מוקדשים לתווי בקרה (התחום הנקרא C1, להבדיל מ־C0, שהוא תחום תווי הבקרה של ASCII).
  • קודים 0xA0 עד 0xBF מוקצים לסימנים שונים, כגון פיסוק, מטבע ומספרים עיליים.
  • קודים 0xC0 עד 0xDF ניתנים, אם אפשר, לאותיות לטיניות גדולות עם אקצנטים.
  • קודים 0xE0 עד 0xFF ניתנים, אם אפשר, לאותיות לטיניות קטנות עם אקצנטים.

יש לשים לב כי קידודי 8 הסיביות של Windows נבדלים מקידודי ISO 8859 בכך שהם מקצים תווים גרפיים במקום תווי הבקרה בתחום 0x80 עד 0x9F. למשל 0x97 בקידוד מערב־אירופה של Windows הוא המקף הארוך. השימוש בתווים אלה אינו תקני והוא עלול לגרום לתופעות לא רצויות (כגון סימני שאלה) בהתקני תצוגה ההולכים לפי ISO 8859. רצוי לקודד תווים אלה ביוניקוד.

החלקים של ISO 8859[עריכת קוד מקור | עריכה]

אלה 15 החלקים הנוכחיים של ISO 8859 (לא סביר שיהיו עוד בעתיד, מכיוון ש־ISO 8859 אינו בפיתוח, והוא מועד להחלפה על ידי יוניקוד):

  • ISO 8859-1: מערב־אירופה או Latin-1. מכסה את השפות הבאות: בסקית, קטלאנית, דנית, אנגלית, שפת איי פארו, גרמנית, איסלנדית, אירית, איטלקית, נורבגית, פורטוגלית, רטו־רומאנית, סקוטית, ספרדית, אלבנית וכן את השפות האפריקאיות אפריקנס וסוואחלי. התקן מכסה באופן חלקי את ההולנדית, הצרפתית והפינית.
  • ISO 8859-2: מרכז־אירופה או Latin-2. מכסה את השפות במרכז אירופה או מזרחה המשתמשות באלפבית הלטיני, כגון: פולנית, צ׳כית, סלובאקית, סלובנית והונגרית.
  • ISO 8859-3: דרום־אירופה. טורקית, מלטית ואספרנטו. בטורקית נהוג להשתמש ב־ISO 8859-9 ובאספרנטו ביוניקוד.
  • ISO 8859-4: צפון־אירופה. אסטונית, לטבית, ליטאית, גרנלנדית וסאמי.
  • ISO 8859-5: קירילית. בלארוסית, בולגרית, מקדונית, רוסית, סרבית ואוקראינית. השימוש בקידוד זה נדיר ביותר. בדרך־כלל משתמשים בקידודי KOI או Windows כדי לקודד קירילית.
  • ISO 8859-6: ערבית. תומך בשפה הערבית בלבד, לא בשפות נוספות הנכתבות בכתב הערבי כמו פרסית ואורדו.
  • ISO 8859-7: יוונית מודרנית (מונוטונית, כלומר עם סוג אקצנט אחד בלבד, להבדיל מהעתיקה הפוליטונית).
  • ISO 8859-8: עברית (ללא ניקוד). תקן זה נחלק לשניים: ISO 8859-8 או ISO 8859-8-E לעברית חזותית ו־ISO 8859-8-I לעברית משתמעת. עברית של Windows תואמת לו באותיות אך מוסיפה ניקוד והיא משתמעת בלבד.
  • ISO 8859-9: טורקית. מחליף את האותיות האיסלנדיות של ISO 8859-1 באותיות טורקיות. משמש גם לכורדית.
  • ISO 8859-10: נורדית. סידור מחדש של ISO 8859-4 לשפות צפון־אירופה. השפות הבלטיות ממשיכות להשתמש ב־ISO-8859-4.
  • ISO 8859-11: תאילנדית.
  • ISO 8859-12: תקן לקלטית שנדחה מפני ISO 8859-14.
  • ISO 8859-13: בלטית. בו הוספו כמה תווים חסרים לשפות הבלטיות.
  • ISO 8859-14: קלטית, למשל גאלית ובריטונית.
  • ISO 8859-15: תיקון ל־ISO 8859-1 המסיר כמה סימנים פחות שימושיים ומקצה במקומם את סימן האירו וכמה תווים הנחוצים לצרפתית ופינית.
  • ISO 8859-16: דרום־מזרח אירופה. תקן לאלבנית, קרואטית, הונגרית, איטלקית, פולנית, רומנית וסלובנית, אך גם לפינית, צרפתית, גרמנית ואירית גאלית.

החסרונות של ISO 8859[עריכת קוד מקור | עריכה]

ISO 8859 אומץ בהתלהבות משום שהוא פתרון טוב לאין ערוך מהווריאנטים של ASCII (המסודרים בתקן ISO 646). עם זאת, אין הוא הפתרון האולטימטיבי, משום שהוא סובל מאותה בעיה של רב־משמעות של הקודים. למשל, הקוד 0xE0 יכול להיות à או ŕ או ā או р (קירילית) או ΰ (יוונית) או א, תלוי בקידוד. דבר זה נסבל כשעובדים בסביבה אחידה של שפה אחת, אך ברגע שמעבירים נתונים מסביבה לסביבה, כמו באינטרנט, יוצר הדבר בעיות.

הפתרון האולטימטיבי למגדל בבל זה של קידודים שונים הוא קידוד המאחד את כל הקידודים והמקצה קוד אחד ויחיד וחד־משמעי לכל תו. קידוד כזה הוא יוניקוד, ולא מן הנמנע כי יחליף את כל הקידודים הקודמים לו.

בתקן יוניקוד עצמו, התווים U+0000 עד U+00FF זהים לתווים 0x00 עד 0xFF בתקן ISO 8859-1. אולם מעבר לכך אין תאימות בין יוניקוד לבין ISO 8859, אם כי הנטייה היא לסדר את התווים באותם מיקומים יחסיים כמו בתקני ISO 8859 (למשל U+05D0 עד U+05EA לאותיות העבריות כמו ש־ISO 8859-8 מקצה להם את המקומות 0xE0 עד 0xFA). קידוד UTF-8 שובר עוד יותר את התאימות עם ISO 8859-1 בכך שהאותיות הלטיניות עם האקצנטים בכלל לא נראות בו באותו אופן כמו ב־ISO 8859-1 (למשל à הוא 0xE0 ב־ISO 8859-1 אך 0xC3 0xA0 ב־UTF-8).