PHP ,UTF-8 וקללות נוספות

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

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

ועכשיו לבעיה.

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

'׳׳ ׳™ ׳œ׳ ׳׳•׳”׳‘ ׳œ׳—׳˜׳˜ ׳‘׳₪׳¦׳¢׳™׳, ׳׳‘׳œ ׳¦׳¨׳™׳š ׳œ׳”׳•׳¡׳™׳£ ׳›

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

אז מה אני רוצה? אחת מהשתיים: או למצוא דרך לקחת את הקובץ שמייצר PHPmyadmin ולהחזירו למערכת מבלי שהעברית תראה כפי שהיא נראית למעלה או לגרום לו לייצר קובץ "סקיפי-סטייל" עם עברית ואז להשתמש בשיטה שאני כבר מכיר כדי להחזיר את התוכן חזרה למערכת.

עזרתם בעניין תתקבל באהבה רבה.

21 מחשבות על “PHP ,UTF-8 וקללות נוספות

  1. אם אתה מצליח לייצא ומקבל ג'יבריש זה מן הסתם בגלל שברירת המחדל שלך עבור הקידוד אינה תואמת את זו ש-notepad מניח שהיא. אין לי חלונות (כבר המון זמן) לבדוק אם הוא יוניקוד או לא, אבל:

    א. למה לפתוח ביוניקוד? מה תעשה כאשר יהיה לך קובץ גדול יותר מהמספר הזעום של הפוסטים כיום 😉
    ב. יש דרכים תקניות יותר לעדכן את מסד הנתונים: פקודות SQL. אם אתה לא מכיר, תשתמש בממשק של PHPmyadmin.

    מלבד זאת, האפשרות לנהל את הגדרות הקידוד של מסד הנתונים תלויה במספר גורמים: בהם גירסת mysql, האם יש לך גישה אליו או שהוא hosted וכו'.

    ומה זה קובץ "סקיפי סטייל"?

    (השב לי בפרטי אם אתה לא רוצה להטריח את הקוראים שלך)

  2. אורי, אני אומנם לא יודע בדיוק מה הם עשו, אבל אני מניח שהם עשו את ההצעה שלך.
    phpmyadmin יוצר קובץ המכיל פקודות SQL לעדכון ה DB. הבעיה היא שהעברית שם יוצאת בקידוד שהם לא יודעים להתמודד איתו.

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

  4. אוקי, אז זה הולך ככה:
    דבר ראשון כאשר אתה נכנס לPHPMYADMIN, איפה שאתה יכול לבחור את שפת הממשק יש לך "קידוד חיבור" או באנגלית " MySQL connection collation:", בחר בקידוד שבו אתה רוצה לגבות את מסד הנתונים.
    כאשר אתה מעלה את המסד לPHPMYADMIN יש לך שם אפשרות בשם "חבילת הקידוד של הקובץ:" בשפת הקודש או "Character set of the file:" בשפת הטומאה.
    ברגע ששני הקידודים האלה מתואמים אז הבעיות נעלמות.
    אם אתה רוצה לצפות בעסק במחשבך האישי (בהנחה שאתה משתמש בוינדווס, פיכסה, תעבור ללינוקס אין לך את הבעיה הזאת) אז תבחר בקידוד cp1255 בשניהם ולא תהיה לך בעיה לצפות בקובץ על המחשב וגם להעלות אותו בPHPMYADMIN.
    שימוש בעברית כשפת הממשק של PHPMYADMIN עוקף את בעיית הקידוד בחלק מהמקרים, שונה מגרסא לגרסא של PHPMYADMIN.

  5. אני הולך לשאול כמה שאלות תם:
    1. מאחר שהבלוג משתמש ב-MySql למה לא לגבות את קבצי ה SQL ישירות ולחסוך את המאמץ?
    2. למה לא לשמור את קובץ ה RSS כגיבוי משני?

  6. להמיר מUTF-8 לANSI ולהיפך זה מאד קל עם NOTEPAD בXP, כששומרים או פותחים קובץ יש תיבה קטנה למטה שנקראת Encoding ובה קובעים אם לשמור/לפתוח את הקובץ בUTF-8 או בANSI

  7. אם אתה מדבר על צפיה בוינדווס שאמרתי עם הcp1255, אני באמת לא יודע אם זה עובד או לא, זה אמור לעבוד, אבל אני לא ממש יכול לנסות את זה כי אני עובד על לינוקס ובלינוקס משתמשים בד"כ בקידוד utf8.

    השאר עובד 100%, עשיתי את זה עשרות פעמים

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

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

  10. אז אתם כנראה משתמשים בגרסא גבוהה מ2.5 של PHPMYADMIN

    אז במצב כזה אין פתרון בתכנה, אבל אפשר להשתמש בסקריפט אחר

  11. איזה לוח בקרה מותקן בשרת? (פלסק DA ודומיו)
    ברובם המכריע יש כלים לגיבוי מסדי נתונים
    אם לא, האם יש לכם גישת SSH?
    אם לא עליכם יהיה להשתמש בסקריפט אחר, כמו הסקריפט שהרס את הגלוב, רק אחד שלא יעשה את זה :X

  12. יכול להיות שיש כאן קידוד כפול

    הסקריפט הזה באתר שלי מבצע החלפת קידוד פעמיים

    http://info.org.il/hebrew_magic.php

    בפעם הראשונה מ UTF-8 ל ISO-8859-1
    ואז מ windows-1255 ל UTF-8

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

    אני לא מבין בזה. זה חבר שלי רומן שכתב את זה בשבילי.

    הוא השתמש בפונקציית ICONV

    HTH

    חנן

  13. הייר צ'יירמן, גם אני חבטתי את הראש בבעייות ENCODING בזמנו והפתרון הכי טוב שמצאתי הוא תוכנת SimRedo Encoding Translator, שמתרגמת קבצים מכל קידוד קיים לכל קידוד קיים אחר (ועכשיו גם ביוונית! אני רציני, זה פיצ'ר חדש). אבל (ויש כאן אבל שיכול לסתום לך את שטח האיכסון מחדש), התוכנה כתובה ב-JAVA.

    אז מה עושים? אני ממליץ שתוריד את ה-JAVA של סאן, זאת שצריך להתקין בשביל לראות JAVA באתרים, ותנסה להריץ את ה-SIMREDO (כולה לחיצה כפולה על הקובץ, לא צריך הגדרות מיוחדות). תראה מה קורה.

    לי על המחשב יש את ה-JAVA JDK, שזאת מפלצת ששוקלת 180 מגה ולא נעימה למגע, אז אני לא יכול לבדוק לך, אבל זה שווה ניסיון.

    תעדכן אותי מה קורה.

    SimRedo Encoding Translator: http://www4.vc-net.ne.jp/%7Eklivo/sim/simeng.htm

    SUN JAVA JRE: http://www.java.com/en/download/manual.jsp

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *