מאיפה בא המונח Mojibake?
Mojibake (文字化け) היא מילה יפנית: "moji" פירושה "תו", ו-"bake" פירושה "שינוי צורה". בשנות ה-90 השתמשו המחשבים ביפן בכמה קידודים במקביל, כמו Shift_JIS, EUC-JP ו-ISO-2022-JP, ולכן מיילים ודפים משובשים היו מראה יומיומי. משם עברה המילה לאנגלית והפכה למונח בינלאומי. בעברית אומרים בדרך כלל "ג'יבריש" או "תווים משובשים".
איך נוצר ג'יבריש?
המחשב שומר טקסט כבייטים, והקידוד קובע איזה בייט מייצג איזו אות. ב-Windows-1255 האות ש היא בייט אחד: F9. תוכנה שקוראת את אותו בייט כ-Windows-1252 מציגה במקומו את האות הלטינית ù. ב-UTF-8, לעומת זאת, ש נשמרת בשני בייטים, D7 A9, ובקריאה כ-Windows-1252 הם הופכים ל-ש.
בשלב הזה שום דבר לא הולך לאיבוד: הבייטים עדיין שם, הם פשוט נקראו לא נכון. לכן ברוב המקרים אפשר לבטל את הג'יבריש: Mojibuster הופך את הסימנים השגויים חזרה לבייטים וקורא אותם בקידוד הנכון.
ג'יבריש
áøåëéí äáàéí ìúì àáéá, äôâéùä áéåí çîéùé áùòä 10
אחרי התיקון
ברוכים הבאים לתל אביב, הפגישה ביום חמישי בשעה 10
צורות הג'יבריש בטקסט עברי
ùìåí: טקסט ב-Windows-1255 שנקרא בקידוד מערבי – הצורה שכל ישראלי מכיר מדוא״ל ישן ומכתוביות.עברית: טקסט UTF-8 שנקרא כ-Windows-1252, למשל ב-Mac, בטפסים באתרים או ב-PHP.׳¢׳‘׳¨׳™׳×: טקסט UTF-8 שנקרא כ-Windows-1255, בעיקר באקסל בעברית: ג'יבריש באקסל.- קבצים שלמים ב-Windows-1255 או ב-ISO-8859-8 מומרים ל-UTF-8: המרת Windows-1255 ל-UTF-8.
ג'יבריש בשפות אחרות
- יפנית:
縺薙s縺ォ縺。縺ッבמקוםこんにちは– טקסט UTF-8 שנקרא כ-Shift_JIS. עוד בדף היפני. - רוסית:
ПриветבמקוםПривет– טקסט UTF-8 שנקרא כ-Windows-1251. ברוסית קוראים לזה "קרקוזיאברי". - שפות מערביות:
é,ñאו€במקוםé,ñאו€– הצורה הנפוצה ביותר בעולם.
סיבות נפוצות
- אקסל פותח קובץ CSV ב-UTF-8 בלי BOM כ-Windows-1255.
- החיבור למסד הנתונים משתמש ב-
latin1, בזמן שהנתונים ב-UTF-8. - אתר או הודעת דוא״ל מצהירים על
charsetשגוי. - קבצים ישנים ב-Windows-1255 נפתחים בתוכנה שמצפה ל-UTF-8.
- טקסט שכבר משובש מומר שוב, ונוצר ג'יבריש כפול.
תמיד אפשר לתקן ג'יבריש?
ברוב המקרים כן, כל עוד הבייטים שלמים. התיקון בלתי אפשרי אם תוכנה כלשהי החליפה את האותיות בסימני ? או בתו החלופי �, כי אז המידע המקורי אבד. יש גם מקרה עברי מיוחד: כש-UTF-8 נקרא כ-Windows-1255, האותיות א, ל, מ, ך, ם ו-ן הופכות לתווי בקרה בלתי נראים, ואם הם נמחקו בהעתקה, האותיות האלה חסרות. Mojibuster מתקן כל מה שאפשר, ועל ? ו-� הוא גם מדווח כמה מקומות אבדו.
איך נמנעים מג'יבריש?
- שמרו קבצים ב-UTF-8, וקובצי CSV לאקסל בפורמט CSV UTF-8 (מופרד בפסיקים).
- ציינו את הקידוד במפורש:
<meta charset="utf-8">ב-HTML ו-utf8mb4ב-MySQL וב-MariaDB. - המירו טקסט פעם אחת בלבד, בנקודת המעבר בין שתי מערכות.
- בייבוא בחרו את הקידוד בעצמכם, במקום לתת לתוכנה לנחש.
שאלות נפוצות
הקובץ פגום או נגוע בווירוס?
לא. ג'יבריש הוא בעיית תצוגה ולא וירוס, ובדרך כלל הוא לא אומר שנתונים אבדו. הקובץ פשוט נקרא בקידוד הלא נכון.
מה ההבדל בין ג'יבריש לבין התו �?
ג'יבריש כמו ùìåí עדיין מכיל את הבייטים המקוריים, ואפשר לתקן אותו. התו � אומר שתוכנה לא הצליחה לקרוא בייט והחליפה אותו – האות הזאת אבדה.
למה מופיעים סימני שאלה במקום עברית?
התוכנה שמרה את הטקסט בקידוד שלא תומך באותיות עבריות והחליפה אותן ב-?. במקרה כזה האותיות אבדו ואי אפשר לשחזר אותן, ולכן כדאי לייצא את הקובץ מחדש מהמקור ב-UTF-8.
הטקסט מועלה לשרת?
לא. Mojibuster מתקן את הטקסט בדפדפן שלכם, והוא לא נשלח לשום מקום ולא נשמר.