UTF-8 הוא קידוד תווים משתנה ליוניקוד. יוניקוד (טבלה שמקשרת תווים למספרים) מגדיר לכל תו מספר. UTF-8 מורה איך לשמור את המספרים האלה במחשב באמצעות בין 1 ל־4 בתים (בתים = יחידות מידע קטנות, bytes). הקידוד תומך בכל התווים של יוניקוד, חוסך זיכרון במקרה של טקסטים באנגלית, שומר על תאימות לאחור ל־ASCII, ועמיד בפני איבוד או השחתת בתים.
UTF-8 הומצא על ידי קן תומפסון ורוב פייק ב־1992. הם מימשו את הרעיון במערכת Plan9, והקידוד הוצג רשמית ב־1993 בכנס USENIX.
יוניקוד הוא המפה של תווים למספרים. UTF-8 הוא אחת השיטות לשמור את המספרים האלו בבתי מחשב. קיימים קידודים אחרים ליוניקוד, למשל UTF-16 ו־UTF-32, שמייצגים את המספרים ב־2 או 4 בתים.
UTF-8 מקצה מספר בתים לכל תו לפי גודל המספר הייצוגי שלו. 128 התווים הראשונים (תווי ASCII) מקודדים בבית אחד. טווחים נוספים משתמשים בשני, שלושה או ארבעה בתים. הסיביות (bits) בתחילת כל בית מזהות האם הבית הוא בית עצמאי או בית המשכי. תכונה זו מאפשרת זיהוי מהיר של תחילת תו ומקנה ל־UTF-8 יכולת התאוששות אם בית אחד נעלם.
הטווח הכולל של יוניקוד עד 0x10FFFF אפשר לייצג עם עד ארבעה בתים בלבד, ולכן UTF-8 הוגבל לארבעה בתים.
העיצוב המשתנה של מספר הבתים והסימון בתחילת כל בית מגן על הטקסט. אם בית אחד אובד במהלך העברה ברשת, רק תו אחד נפגם ולא כל הקובץ. בנוסף, מאחר שהמבנה ברור, אפשר לחפש מילים בקבצים מקודדים ב־UTF-8 ביעילות.
"צורה ארוכה" היא קידוד של תו ביותר בתים ממה שנדרש. בעבר נעשה שימוש ציני בצורות ארוכות כדי לעקוף בדיקות אבטחה. בעקבות זאת, הסטנדרטים המודרניים אוסרים על פיענוח צורות ארוכות.
כשמפענח UTF-8 נתקל בקלט שגוי, יש מספר דרכי טיפול:
- להחליף את התו השגוי בתו מיוחד (למשל "�").
- להתעלם מהבתים הלא תקינים.
- לפרש את הבתים לפי קידוד אחר (לדוגמה ISO-8859-1).
- לדווח על שגיאה ולעצור.
המלצה חשובה לאבטחה היא לפענח את הטקסט לפני ביצוע בדיקות על תוכנו, או להשתמש במפענח שלא מאפשר צורות ארוכות.
יתרונות עיקריים: תאימות ל־ASCII, חסכון מקום לטקסטים באנגלית, עמידות להשחתת בתים, וזיהוי ברור של תחילת תו. חסרונות: טקסטים בשפות שאינן אנגלית עלולים לתפוס יותר מקום מאשר בקידודים מסוימים הייעודיים, ויש צורך לטפל נכון בקלטים לא תקינים.
UTF-8 הוא ברירת המחדל בלינוקס וביוניקס, ונמצא בשימוש נרחב באינטרנט. שפת Java תומכת ב־UTF-8, אך משתמשת גם בגרסה מעט שונה (modified UTF-8) במקרים פנימיים; שינוי זה מייצג תו NUL בצורה שונה וטיפול בזוגות ממילא (surrogate pairs) בצורה שגורמת לקידוד ארוך יותר לחלק מהתווים. מערכת ההפעלה Mac OS X משתמשת בגרסה ממומשת של UTF-8 עם נירמול קנונית (UTF-8‑MAC), שבה תווים מסוימים מפורקים לצירוף תו בסיס ותווים משלבים.
UTF-8 היא שיטה לשמור אותיות ומילים במחשב. יוניקוד (טבלה של תווים ומספרים) נותן לכל אות מספר. UTF-8 מכניס את המספרים האלה לתוך בתים (בתים = יחידות מידע קטנות).
קנו את הרעיון קן תומפסון ורוב פייק ב־1992. ב־1993 הרעיון הוצג בפומבי.
יוניקוד אומר איזה מספר שייך לאות. UTF-8 אומר איך לשים את המספר הזה במחשב.
חלק מהתווים נשמרים בבית אחד. תווים נפוצים באנגלית נשמרים בבית אחד. תווים אחרים זקוקים ל־2, 3 או 4 בתים. בתחילת כל בית יש סימן שמראה אם זה הבית הראשון של התו או בית המשכי. זה עוזר אם בית אחד הולך לאיבוד.
לפני כן אפשר היה לכתוב תו בדרך ארוכה יותר. זה שימש לרמייה. היום לא מותר להשתמש בזה.
אם יש קטע מקודד שלא תקין, אפשר:
- להחליף אותו בתו מיוחד כמו "�".
- להתעלם ממנו.
- לדווח על שגיאה.
יתרון גדול: UTF-8 עובדת עם הרבה שפות ועם האינטרנט. לינוקס ו־מערכות רבות משתמשות ב־UTF-8 כברירת מחדל. Java ומחשבי מק משתמשים בגרסאות מיוחדות במקרים מסוימים.
תגובות גולשים