מחשביםתכנות

UTF-8 - קידוד תווים

Unicode תומך כמעט בכל ערכות תווים קיימות. הצורה הטובה ביותר של קידוד תווי Unicode היא בקידוד UTF-8. הוא תומך תאימות עם ASCII, התנגדות עיוות של נתונים, יעילות וקלות עיבוד. אבל בל נקדים את המאוחר.

טופס קידוד

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

במערכות מחשב, מספרי השלמים מאוחסנים בתאי הזיכרון של 8 ביטים (1 בייט), 16 או 32 סיביות. טופס כל מגדיר קידוד Unicode, אשר הרצף של תאי זיכרון הוא מספר שלם המתאים לסמל מסוים. בתקן יש שלוש צורות שונות של קידוד תווי Unicode 8, 16 ו 32 סיביות בלוקים. לפיכך, הם ידועים בתור UTF-8, UTF-16 ו- UTF-32. UTF שם מייצג פורמט טרנספורמציה Unicode. כל אחד משלושת סוגי אמצעי קידוד הוא תו יוניקוד ייצוג שווה יש יתרונות ביישומים שונים.

הצפנת נתונים שניתן להשתמש בהם כדי לייצג את כל הדמויות בתקן Unicode. לפיכך, הם בעלי תאימות מלאה לפתרונות עבור מגוון רחב של סיבות, באמצעות צורות שונות של קידוד. כל קידוד ניתן להמיר באופן חד משמעי לאחת מן השניים האחרים ללא אובדן נתונים.

עיקרון nenalozheniya

כל אחד קידוד Unicode צורות שפותחו לאור חפיפה חלקית שאינו. לדוגמה, Windows-932 מהווה את הדמויות של אחד או שני בתים של קוד. אורך רצף תלוי בייט הראשון, לכן הערכים בייט מובילים בסדרה של שני-בייט ו פרוק בייט יחיד. עם זאת, הערך של בית אחד ו רצף תווים נגררים עשויים לחפוף. משמעות הדבר היא למשל כי D חיפוש אופי (קוד 44) יכול למצוא אותו בטעות נכנסים לתוך החלק השני ברצף של אופי דו-בייט "D" (קוד 84 44). כדי לגלות אילו רצף נכון, התכנית צריכה לקחת בחשבון את הבייטים הקודמים.

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

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

היבט נוסף nonintersection קידודי Unicode הוא כי כל תו יש גבול מוגדר. זה מבטל את הצורך לסרוק מספר בלתי מוגבל של סימנים קודמים. תכונה זו נקראת לעתים קידוד-clocking עצמית. עיוות של יחידות קוד יציגה עיוות של תו אחד בלבד, ואת הדמויות הסובבות הם עדיין תמימות. בשנות ה המרה לפורמט 8-bit, אם נקודות מצביע על בייט, החל 10xxxxxx (ב קוד בינארי) כדי למצוא את ההתחלה של סמל דרושה לצורך אחת ל שלושה תהליכי שינוי הפוכה.

עקבי

מאגד Unicode תומך בכל 3 צורות של קידודי במלואה. חשוב לא להתנגד UTF-8 ו- Unicode, כמו בכל הפורמטים המרים - לא פחות צורות תקפות של התגלמות של תקן אופי קידוד Unicode.

Byte-אוריינטציה

כדי לייצג תווים UTF-32 תצטרך יחידת קוד 32 סיביות, אשר עולה בקנה אחד עם קוד Unicode. UTF-16 - אחד שתי יחידות 16 סיביות. UTF-8 משתמש עד 4 בתים.

קידוד UTF-8 נועד להיות תואם עם מערכות ASCII מבוסס בתים מוכווני. רוב תוכנות הנוהג הקיימים של טכנולוגיית מידע במשך זמן רב הסתמכו על הייצוג של תווים ברצף של בתים. פרוטוקולים מרובים תלויים והתמדת קידוד ASCII ומשתמשים גם ימנעו את תווי בקרה המיוחדים. דרך פשוטה להסתגל למצבים יכול Unicode, באמצעות קידוד 8 סיביות לייצוג תווי Unicode, כל תו ASCII שווה או דמות מלאה. לשם כך, וזה קידוד UTF-8.

אורך משתנה

UTF-8 - הקידוד באורך משתנה, מורכב מיחידות אחסון 8 סיביות, הפיסות העליונות אשר מצביעות לאיזה חלק של הרצף של כל בייט בודד שייכות. מגוון אחד מהערכים המוקצבים לאלמנט הראשון של רצף הקוד, אחר - עבור הבא. זה מספק קידוד disjointness.

ASCII

קידוד UTF-8 הוא קודי ASCII נתמכים באופן מלא (0x00-0x7F). משמעות הדבר היא כי תווי Unicode U + 0000-U + 007F מומרים UTF-8 0x00-0x7F בייט בודד ולכן אפשר לנתק ASCII. יתר על כן, כדי למנוע אי בהירות, הערך לא 0x00-0x7F בשימוש עוד בשנת ייצוג בייט בודד של תווי Unicode. כדי לקודד סימנים neideograficheskih מלבד ASCII, באמצעות רצף של שני בתים. סמלים נעו U + 0800-U + FFFF מיוצגים על ידי שלושה בתים, וקודים נוספים עם יותר מ- U + FFFF דורשים ארבעה בתים.

תחום היישום

קידוד UTF-8 בדרך כלל ניתן העדפה בפרוטוקול HTML, וכדומה.

XML הפכה לסטנדרט הראשון עם תמיכה מלאה בקידוד UTF-8. ארגוני התקנים ממליצים גם אותו. תמיכת בעית כתובת ה- URL שונה-בתווי ASCII, הוחלטה כאשר W3C קונסורציום קבוצת הנדסת IETF הגיעו להסכמה על הקידוד של כל כתובות URL בלעדי ב- UTF-8.

תאימות עם ASCII מקלה על המעבר לתוכנה החדשה. עם UTF-8 עובד הכי עורכי טקסט, כולל jEdit, Emacs, BBEdit, אקליפס, ו "פנקס רשימות" במערכת ההפעלה Windows. אין צורה אחרת של קידוד Unicode לא יכול להתפאר של תמיכה כזו של הכלי.

קידוד היתרון הוא שזה מורכב מרצף של בתים. עם מחרוזת UTF-8 הוא קל לעבוד ב- C ושפות תכנות אחרות. זוהי הצורה היחידה של קידוד, הסדר אינו מחייב תוויות בתי BOM או הצהרת קידוד ב- XML.

סנכרון עצמי

בסביבה המשתמשת 8 סיביות סימנים של העיבוד לעומת ערכות תווים רב-בייט אחרים, UTF-8 יש את היתרונות הבאים:

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

השווה את היתרונות

קידוד UTF-8 הוא קומפקטי. אבל כאשר נעשה שימוש לקידוד תווי מזרח אסיה (סיני, יפני, קוריאני, סיני בכתב באמצעות סימנים) המשמש רצפים 3-בייט. כמו כן בקידוד UTF-8 הוא נח צורות אחרות של קידוד מהירות עיבוד. המוני חבלי מיון בינארי מייצרים את אותה תוצאה כמו בינארי מיון Unicode.

סכימת קידוד התווים

סכימת קידוד תווים כוללת טופס סימני קידוד שיטת יחידות קוד במקום האחד בייט. כדי לקבוע את שיטת הקידוד בתקן Unicode מספק את השימוש בסימן סדר הבייטים ראשוני (BOM, סמן סדר הבייטים).

כאשר BOM ב תג תכונה UTF-8 הוא מוגבל רק על ידי התייחסות השימוש בצורות של קידוד. בעיות בקביעת UTF-8 endian יש, כמו גודל יחידת קידוד שלה הוא בייט אחד. באמצעות BOM עבור סוג זה של קידוד הוא דרש ולא מומלץ. BOM עלולה להתרחש בתוך הטקסט להמרה מ codings האחר באמצעות בייט כדי לסמן או חתימה על קידוד UTF-8. האם רצף של 3 בתים EF BB 16 16 BF 16.

כיצד להגדיר את הקידוד UTF-8

HTML קידוד UTF-8 מותקן עם הקוד הבא:

ראש

מטא-equiv http = "Content-Type" content = "text / html; charset = utf-8" ˃

בשנת PHP UTF-8 קידוד מוגדר שימוש בכותרת (הפונקציה) בתחילת הקובץ לאחר שיצר את שגיאת ערך רמת תפוקה:

˂? Php

error_reporting (-1);

כותרת ( "Content-Type: text / html; charset = utf-8 ");

כדי להתחבר קידוד מסד הנתונים MySQL UTF-8 מוגדר:

˂? Php

mysql_set_charset ( 'UTF8');

קידוד CSS-קובץ הוא תווי UTF-8 מצוין באופן הבא:

@charset "utf-8";

כאשר אתה שומר את הקבצים מכל הסוגים לבחור קידוד UTF-8 ללא BOM, אחרת האתר לא יעבוד. כדי לעשות זאת ב- DreamWeave צריך לבחור בפריט התפריט "שינויים - מאפייני הדף - כותרת / קידוד" כדי לשנות את הקידוד ל- UTF-8. ואחריו מחדש את הדף, ולהסיר את הסימון מ "חתימה Unicode Connect (BOM)» ולהחיל את השינויים. אם כל טקסט בדף או במסד נתונים הוצג צורה אחרת של קידוד, יש צורך להזין מחדש או לקודד מחדש. כשאתה עובד עם ביטויים רגולריים, הקפד להשתמש בתכונה u.

אתה יכול גם לשמור את הקובץ בקידוד UTF-8 ב- "פנקס הרשימות" של Windows. לאחר בחירת פריט תפריט "קובץ - שמירה בשם ..." כדי להתקין את טופס הכרחי של קידוד לשמור את הקובץ ב- UTF-8.

בפנקס עורך טקסט ++, אם להגדיר אחרת מאשר UTF-8, באמצעות פריט התפריט "המר ל UTF-8 ללא BOM» לשנות את אופי ולשמור ב- UTF-8.

אין ברירה

בהקשר של גלובליזציה, שבו גבולות פוליטיים לשוניים נמחקים, ערכות התווים שיש מאפיינים מקומיים, הם של שימוש מועט. Unicode היא קבוצה תו בודד התומך בכל localizations. UTF-8 - דוגמא של היישום הנכון של Unicode, שהוא:

  • הוא תומך במגוון רחב של כלים, כולל תאימות עם קידוד ASCII;
  • הוא עמיד בפני נתוני עיוות;
  • פשוט ויעיל בטיפול;
  • הוא פלטפורמה עצמאית.

עם כניסתו של הדיון UTF-8 על מה בדמות סט קידוד או אופי עדיף, הוא הופך להיות חסר משמעות.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 iw.birmiss.com. Theme powered by WordPress.