UTF-8
יוניקוד ואיזו 10646 אמנם מספקים טבלת קידוד, אבל אם ניישם אותה כפי שהיא תיווצר בעיית תאימות קשה. כל התוכנות שנכתבו עבור קידוד של כל אות בבייט אחד ( ASCII ) (למשל, בפעם האחרונה שבדקתי, ל משרד החינוך של מדינת ישראל אפשר היה להעביר נתונים רק ב (ASCII או שניים (למשל C ) יגיעו לאות שלנו שתראה כך 0041 , יקראו את שני האפסים הראשונים וילכו הביתה.
אז איך פותרים את העניין?
ב1992 קן תומפסון ובוב פייק הציעו את הפיתרון שנקרא UTF-8 .
הרעיון הוא שהתווים יקודדו לפי הטבלה הבאה. כל התווים השימושיים ייכנסו בשלשה בייטים, וכל התווים של אסקי בבייט אחד:
הטבלה היא בתצוגה הקסאדצימלית של המספרים (על בסיס 16)
|
U-00000000 – U-0000007F: |
0xxxxxxx |
|
U-00000080 – U-000007FF: |
110xxxxx 10xxxxxx |
|
U-00000800 – U-0000FFFF: |
1110xxxx 10xxxxxx 10xxxxxx |
|
U-00010000 – U-001FFFFF: |
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
|
U-00200000 – U-03FFFFFF: |
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
|
U-04000000 – U-7FFFFFFF: |
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx |
כמו שאתם יכולים לראות, 128 תווי האסקי תופסים בייט אחד שהביט הראשון שלו מתחיל ב0. כך יש תאימות לכל אפליקציות אסקי.
אם הביט הראשון הוא 1 , הקורא יודע שזו אות המבוטאת ע"י יותר מבייט אחד, ולפי מספר הביטים שהם 1 כך מספר הבייטים המבטאים את האות. תיאורטית, יכול להיות שתהיה אות מיוצגת ע"י 6 בייטים, אבל באופן מעשי 3 בינתיים מספיקים. (עד שתמציאו את השפות החדשות, כדלעיל).
איך התוכנה שקוראת תדע האם הקובץ מקודד ב UTF-8 ?
בחלונות, כל קובץ כזה חייב להתחיל בתו U+FEFF . במערכות הפעלה אחרות זה סיפור מסובך, וככלל ההגדרה לא נעשית בקובץ עצמו אלא בקביעת הלוקאל של המערכת.
בדפי אינטרנט המצב יותר פשוט. יש שני מקומות בהם ניתן להודיע לדפדפן הקורא שהשרת שולח לו דף UTF-8 :
ב header http של הקובץ, שמגדיר את טיב ההתקשרות בין השרת והלקוח בעזרת הפקודה:
Content-Type: text/plain; charset=utf-8
אם אין לנו שליטה על השרת השולח את ה http header אפשר לתת את הפקודה גם בתוך הקובץ, בחלק ההגדרות המטא של ה head
< META http-equiv=Content-Type content=”text/html; charset=UTF-8”>
החיסרון הגדול של דרך זו היא שהדפדפן קורא את זה אחרי שהתחיל כבר עם הקובץ, כך שכל מה שקודם לשורה הזו לא יקרא בקידוד הנכון. אם אתם משתמשים בזה, הקפידו שזו תהיה השורה הראשונה ב HEAD .
מקור לחומר: http://www.unicode.org/versions/Unicode4.0.0/ch03.pdf#G31703
עברית ב UTF-8
נו כבר, אני רוצה לכתוב כף סופית דגושה, מוטעמת עם מתג וגם עם טעמי המקרא: תוכלו למצוא את הקידוד המלא של עברית ביוניקוד כאן : http://www.unicode.org/charts/PDF/U0590.pdf זכרו, שלא בהכרח שהתוכנות והפונטים שברשותכם מסוגלים להציג את כל התווים האלו, אז אל תצפו לכתוב אותם מייד.
הבטחתי למתכנתים בשפת Cirth קישור לקידוד לשפתו של טולקין , אז הנה:
http://anubis.dkuug.dk/jtc1/sc2/wg2/docs/n1642/n1642.htm
