יום שישי, 10 באוגוסט 2012

שדרוג IPB ישן ל-3+ עם המרה ל-UTF-8

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

החל מגרסה 3, מערכת IPB תמכה רשמית ובצורה תקינה ביוניקוד.
כשאתה משדרג ממערכת ישנה, הם לא נותנים דרך רשמית להמיר את הכל מ-Windows-1255 ל-UTF-8.
אז ניסיתי דרכים ומצאתי אחת שגם משדרגת וגם ממירה את קידוד הטקסט על הדרך.

הצעדים שנדרשו:

א. לייצא את המסד של המערכת הישנה מתוך ה-ACP שלה (לא מ-phpMyAdmin) לקובץ SQL. קובץ ה-SQL הזה אמור להיות בקידוד Windows-1255 (ידוע גם כ-Hebrew-Windows).

ב. להמיר את קובץ ה-SQL ל-UTF-8 (עם BOM) ולהעיף את המחרוזת "DEFAULT CHARSET=latin1" מהשורות שמגדירות את מבנה הטבלאות. לצעד זה יצרתי סקריפט Java שעושה זאת, כיוון שכל עורכי הטקסט שניסיתי קרסו עם קובץ ה-SQL הענק. אם אתם זקוקים לזה, אני יכול לספק קובץ jar שמאפשר לבחור SQL ולבצע את השלב.

ג. להגדיר את ה-MySQL שיעבוד ב-utf8 כברירת מחדל.

ד. לייבא את קובץ ה-SQL החדש ל-MySQL.

ה. להכנס למסד שיובא (עכשיו ב-UTF-8) דרך phpMyAdmin. בתוך הטבלה core_sys_conf_settings לשנות את הערך של gb_char_set מ-"Windows-1255" ל-"UTF-8".

ו. לשים את הקבצים של IPB3+ על המערכת הישנה ולבצע את השדרוג (להכנס ישירות ל-admin/upgrade).

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

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