מה זה ג'יבריש (Mojibake)?

ג'יבריש, או בשמו הבינלאומי Mojibake, הוא טקסט שהאותיות שלו הפכו לסימנים חסרי משמעות, כמו ùìåí או עברית במקום עברית. הוא נוצר כשטקסט נשמר בקידוד אחד ונקרא בקידוד אחר, וברוב המקרים אפשר לתקן אותו לגמרי. הדביקו טקסט משובש למטה ונסו.

עובד עם טקסט ועם הקבצים האלה:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

למשל קובצי ייצוא מאקסל, גיבויים של מסדי נתונים, כתוביות וקוד של אתרים.

תיקון

  1. גררו קובץ או הדביקו טקסט
  2. התיקון נעשה אוטומטית
  3. העתיקו או הורידו את התוצאה
או גררו את הקובץ לכאן
  • בלי העלאה. הקבצים מתוקנים ישירות בדפדפן ולעולם לא יוצאים מהמכשיר שלכם.

  • שרתים באיחוד האירופי. Mojibuster פועל על שרת בפינלנד (האיחוד האירופי), ולכן חלה עליו תקנת הגנת המידע הכללית (GDPR). נוסח התקנה (EUR-Lex, באנגלית)

מאיפה בא המונח Mojibake?

Mojibake (文字化け) היא מילה יפנית: "moji" פירושה "תו", ו-"bake" פירושה "שינוי צורה". בשנות ה-90 השתמשו המחשבים ביפן בכמה קידודים במקביל, כמו Shift_JIS, EUC-JP ו-ISO-2022-JP, ולכן מיילים ודפים משובשים היו מראה יומיומי. משם עברה המילה לאנגלית והפכה למונח בינלאומי. בעברית אומרים בדרך כלל "ג'יבריש" או "תווים משובשים".

איך נוצר ג'יבריש?

המחשב שומר טקסט כבייטים, והקידוד קובע איזה בייט מייצג איזו אות. ב-Windows-1255 האות ש היא בייט אחד: F9. תוכנה שקוראת את אותו בייט כ-Windows-1252 מציגה במקומו את האות הלטינית ù. ב-UTF-8, לעומת זאת, ש נשמרת בשני בייטים, D7 A9, ובקריאה כ-Windows-1252 הם הופכים ל-ש.

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

טקסט ב-Windows-1255 שנקרא כ-Windows-1252

ג'יבריש

áøåëéí äáàéí ìúì àáéá, äôâéùä áéåí çîéùé áùòä 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 מתקן את הטקסט בדפדפן שלכם, והוא לא נשלח לשום מקום ולא נשמר.

מדריכים נוספים