לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
האשכול נעול
 
כלי אשכול חפש באשכול זה



  #1  
ישן 01-11-2005, 01:05
צלמית המשתמש של fat fish
  fat fish fat fish אינו מחובר  
 
חבר מתאריך: 20.06.03
הודעות: 5,616
מדריך הגירה ל-MySql עם Collation

בחודשים האחרונים, רבים הפנו אלי שאלות לגבי הגירה בין מסדי נתונים מסוג MySql.

חברות אחסון רבות שידרגו את מסדי הנתונים שלהם לגרסה > 4.1.
גרסאות אלה תומכות רק UTF8 Unicode - ובאספקט חדש הנקרא collation.

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

הבעייה העיקרית היא לאלו שצריכים לעבור מגרסה נמוכה לגרסה 4.1+ ואז הפלט תמיד, אבל תמיד
יוצא כג'בריש (IE) או סימני שאלה (FF). להלן מדריך קטן איך לעבור בשלום את ההגירה הזו.
(מדריך זה נכתב עקב נסיון שלי להתמודד עם בעייה דומה של לקוח שחברת האחסון שידרגה
את שרתי ה-MySql שלה ללא הודעה מוקדמת)

תהליך ההמרה:

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

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה


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

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

הקידוד הוא כמובן Hebrew, להזכירכם, כל הקידודים הינם UTF8.
ואת ה- Collation יש לבחור כ- Hebrew_bin.

בדף מסד הנתונים שלכם, נגדיר את Collation ברירת המחדל של השדות שלנו:
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

לאחר הגדרת מסד הנתונים, נייבא את קובץ מסד הנתונים שייצאנו משרת MySql בגרסה < 4.1 ונוודא
שאנו קוראים תכנים בעברית תקינה.
עד כאן תהליך הייבוא תקני למדי למעט ה-Collation.

אם נבצע שאילתה ונשלח את הפלט לדפדפן, אפילו אם הגדרנו את התג הבא:
קוד PHP:
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

נקבל את הטקסט העברי שגוי.

על מנת לפתור את הבעייה, נבצע שני דברים:
הראשון, שתמיד מומלץ כאשר אנו מטפלים בתוכן עברי בתוך קבצי php (במיוחד כאלה שלא מטפלים בפלט
למסך, אלא רק בעיבוד נתונים, מסדי נתונים כו) - הוא לשים בראש כל קריאות ה-PHP קריאת header
לקידוד.
אם יש לנו קריאות header משלנו, פשוט נוסיף שורה נוספת זו:

קוד PHP:
 header('Content-Type: text/html; charset=utf-8'); 


שורה זו מודיעה לדפדפן, שהתוכן הנשלך אליו הוא בקידוד UTF8.

הדבר השני והחשוב הוא להגדיר למסד הנתונים את השפה בה נכתב הטקסט השמור. זה אחד התוספות
המעצבנות מעט, אך שחובה לעשותן ב-MySql בגרסה 4.1 ומעלה.
לאחר ביצוע החיבור למסד הנתונים, נשלח את השאילתות הבאות למסד הנתונים:
קוד PHP:
 $link mysql_connect('localhost''mysql_user''mysql_password');
if (!
$link) {
   die(
'Could not connect: ' mysql_error());
}
.
.
.
mysql_query("SET character_set_client = utf8");
mysql_query("SET character_set_connection = utf8");
mysql_query("SET character_set_results = utf8"); 


שאילתות אלה יגדירו למסד הנתונים את תצורת העבודה שלו בחיבור הנוכחי (עברית).
ותוצאות השאילתות שעד כה התקבלו בג'יבריש - יהיו בעברית צחה!


בהצלחה,
_____________________________________
[ זיו ]
[ fat fish ]


נערך לאחרונה ע"י fat fish בתאריך 01-11-2005 בשעה 01:12.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
האשכול נעול

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:43

הדף נוצר ב 0.06 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר