המשך מבוא לutf-8 - המפגש עם הבראוזר

מקום לדון בהצעות לשיפור המערכת

המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי Dror » 01 נובמבר 2006, 21:15

מפגש הבראוזר וutf
h1> קידוד UTF-8 במפגש עם הבראוזר



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

(הפרק הקודם - כאן :http://www.joomla.co.il/component/option,com_smf/Itemid,34/topic,3183.msg9495#msg9495 )


נתחיל במקרה המצוי והגרוע – גלשתם לאתר מסוים, ציפיתם למצוא דף בעברית וקיבלתם גיבריש וקשקושים.

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

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

הקידוד נקבע במקום אחד, ויש שלשה מקומות בהם ניתן להודיע לקליינט מהו הקידוד שנקבע.
המקום הראשון – קביעת הקידוד ביצירת הקובץ

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

כל קובץ שעובר באינטרנט בין השרת והלקוח, נושא עמו קובץ נלווה המתאר את אופיו ותוכנו. זה כמו כתובת על מעטפה שאומרת מה אמורים לעשות איתה. במשל זה דף ה HTML נמצא בתוך המעטפה. קובץ נלווה זה נקרא HTTP HEADER (לא לבלבל עם תג ה HEAD ב HTML , זהו תג שכתוב כבר בתוך קובץ התוכן, במשל שלנו בדף שבתוך המעטפה) . מה יש בקובץ הזה? - כל מיני סוגי מידע על האפליקציה השולחת ועל הקובץ הנשלח. דוגמא של קובץ כזה שלקחנו מאתר של w3.org :

HTTP/1.1 200 OK

Date: Wed, 05 Nov 2003 10:46:04 GMT

Server: Apache/1.3.28 (Unix) PHP/4.2.3

Content-Location: CSS2-REC.en.html Vary:

negotiate,accept-language,accept-charset TCN: choice P3P:

policyref=http://www.w3.org/2001/05/P3P/p3p.xml

Cache-Control: max-age=21600 Expires: Wed, 05 Nov 2003 16:46:04 GMT

Last-Modified: Tue, 12 May 1998 22:18:49 GMT ETag: "3558cac9;36f99e2b"

Accept-Ranges: bytes

Content-Length: 10734 Connection: close

Content-Type: text/html; charset=utf-8 Content-Language: en[/left]

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

מי שולט על תוכן הקובץ הזה והשורה הזאת?

בד"כ, שרת האינטרנט וקובץ ההגדרות שלו.

בהרבה מקרים, בגלל התקנות של שרתי האינטרנט ( Apache, IIS ) ההדר הזה (טוב התכוונתי ל header , קשה בלי ניקוד, אולי נאמץ מהיידיש את השימוש באות "ע" כצירה ונכתוב "העדר" , לא זה מבלבל, אולי "העדער" ...) אז הקובץ הזה מכיל הפניה לקידוד אחר או הקידוד ברירת המחדל iso -8859-1 ואז נוצרת בעיה.

איך פותרים בעיות עם header ?

אפשרות אחת – בשינוי ההגדרות בשרת :

אם יש לכם גישה לקבצי ההגדרות של השרת, אתם יכולים לשנות את הקידוד של כל הדר של כל קובץ שהשרת שולח.

אם אתם משתמשים בשרת אפצ'י, (ואם לא אז מה יש לכם לעשות עם ג'ומלה?) יש תקווה גם אם אין לכם גישה לקבצי ההגדרות, עדיין יש אפשרות לשנות את הגדרות השרת דרך עריכת קבצי ה htaccess בספריה שלכם. אפשרות זו תעבוד רק אם בקובץ ההגדרות הראשי בשרת קבעו את ההרשאה AllowOveride All המאפשרת השלטה של פקודות קונפיגורציה מתוך קבצי htaccess על הקונפיגורציה הכללית שבשרת. חשוב לציין שרישום בקובץ htaccess יחול על הספריה בה הוא נמצא וכל הספריות שתחתיה, אלא אם כן הוספתם קובץ נוסף מסוג זה לאחת הספריות.

מה להוסיף ב htaccess ?

אם אתם רוצים שקבצים בסיומת php יישלחו עם header כדלעיל, תוסיפו את השורה הבאה:

AddCharset UTF-8 .php

אם אתם רוצים גם html הוסיפו באותה שורה גם את הסיומת הזו.

אם אתם רוצים שקובץ מסוים יישלח ולא כל הספריה, תכתבו כך:



AddCharset UTF-8 .html



כתיבת header ב php

אם לא הולך לכם עם htaccess , יש עוד אפשרויות נוספות, והטובה שבהן היא שימוש ב php :

יש ב php פקודה מועילה שמאפשרת לכתוב ל header , אך היא חייבת להיות הראשונה בדף, לפני כל תג html או xml . וכך תיראה הפקודה שתיצור את ההדר המבוקש לאותו הקובץ:


המקום השלישי – הכרזת xml

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

ההכרזה הזו מופיעה בראשית הקובץ, מחוץ לתג הראשי של html , ונראית כך:


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ביחד עם הכרזה זו, אנו מודיעים בשפת xml מה הקידוד של הקובץ (לפני ההכרזה) ומה תבנית ה xml שלו (אחרי ההכרזה) והכל ביחד נראה כך:




"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



תוצאת ההכלאה הזו בין html ו xml מכונה xhtml .

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

המשך המאמר כאן:
http://gushetzion.net/index.php?option= ... &Itemid=25
נערך לאחרונה על ידי Dror בתאריך 04 נובמבר 2006, 22:07, נערך פעם אחת בסך הכל.
Dror
ג'ומלאי משתלב
ג'ומלאי משתלב
 
הודעות: 51
הצטרף: 29 ספטמבר 2004, 09:26

בעניין: המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי mtk » 01 נובמבר 2006, 22:55

דרור שלום,
כל הכבוד על המדריך!!!

דרישה קטנה לי אליך, אשמח עם תערוך את המדריך ותוסיף את התגים המתאימים כגון: code, quote, left
ע"מ שהטקסט יראה טוב יותר.

ושאלה קטנה (כי לא קראתי עדיין)
האם זה רלוונטי רק ל-1.5, או שזה כללי לג'ומלה, או כללי לגבי עבודה עם PHP...?

תודה
מומחה ג'ומלה ו-RTL - בניית אתרי אינטרנט מבוססי ג'ומלה, מודולי סליקה, תמיכה, הדרכה, אתר מראה לזאפ ועוד...
Gracy Art - אתר היצירה של גרסיאלה קוצ'ן | IsrArg - קהילת ישראל-ארגנטינה
לייט הוסט - אחסון אתרים לג'ומלה בישראל - כולל התקנה חינם בחשבון האחסון! תמיכה בג'ומלה, תבניות לג'ומלה ועוד.
mtk
צוות הגרעין
צוות הגרעין
 
הודעות: 7365
הצטרף: 13 נובמבר 2005, 23:36
מיקום: BGU

בעניין: המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי Dror » 02 נובמבר 2006, 00:22

זהו מבוא כללי בעניין השימוש בutf-8 עם השלכות ספציפיות לג'ומלה. בינתיים עוד לא התייחסתי למבנה קבצי השפה בג'ומלה כי זה רק אחרי הסבר ענייני בסיס הנתונים.
כמובן שרוב הבעיות שאנשים כאן מעלים קשורים לנושאים של טיפול בקידוד שהם לא ספיציפיים לג'ומלה אלא לתשתית ה LAMP.
בנוגע לעריכת התגים, צר לי הוויזיוויג מעצבן ומשתף פעולה באופן חלקי מאד. כשאסיים אכין קובץ PDF מסודר ואז יהיה יותר קריא.
היישור קורע את התגים, וקטעי הקוד מופיעים בצורה קשה לקריאה.
בדרך כלל אני מכניס פשוט html אבל בוויזיוויג כאן אין את האפשרות הזו.

באופן כללי אני חושב שהיה יותר טוב אם הייתם משתמשים בג'ומלהבורד המאפשר לחלוק את העורך וכל הפרמטרים עם ג'ומלה.
בכל זאת, אתה צודק שצריך לניות נוח לקוראים אז אני מצרף פה קובץ קריא יותר של המאמר,
Dror
ג'ומלאי משתלב
ג'ומלאי משתלב
 
הודעות: 51
הצטרף: 29 ספטמבר 2004, 09:26

בעניין: המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי mtk » 02 נובמבר 2006, 02:11

Dror כתב:זהו מבוא כללי בעניין השימוש בutf-8 עם השלכות ספציפיות לג'ומלה. בינתיים עוד לא התייחסתי למבנה קבצי השפה בג'ומלה כי זה רק אחרי הסבר ענייני בסיס הנתונים.

אז אפשר להעביר את הדיון לפורום כללי יותר, ולאו דווקא זה של 1.5?


תנסה להוסיף כמה תגי CODE ולא רק LEFT, זה הרבה יותר קריא...

תודה
מומחה ג'ומלה ו-RTL - בניית אתרי אינטרנט מבוססי ג'ומלה, מודולי סליקה, תמיכה, הדרכה, אתר מראה לזאפ ועוד...
Gracy Art - אתר היצירה של גרסיאלה קוצ'ן | IsrArg - קהילת ישראל-ארגנטינה
לייט הוסט - אחסון אתרים לג'ומלה בישראל - כולל התקנה חינם בחשבון האחסון! תמיכה בג'ומלה, תבניות לג'ומלה ועוד.
mtk
צוות הגרעין
צוות הגרעין
 
הודעות: 7365
הצטרף: 13 נובמבר 2005, 23:36
מיקום: BGU

בעניין: המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי adiel » 02 נובמבר 2006, 12:31

אפשר קישור לפרק הקודם???
adiel
ג'ומלאי משתלב
ג'ומלאי משתלב
 
הודעות: 166
הצטרף: 19 אוקטובר 2005, 12:23

בעניין: המשך מבוא לutf-8 - המפגש עם הבראוזר

הודעהעל ידי gali » 04 נובמבר 2006, 19:48

adiel כתב:אפשר קישור לפרק הקודם???

עכשיו הם מודבקים באותו המקום  ;)
T   TC   TCP   TCP/IP  ::)
סמל אישי של המשתמש
gali
ג'ומלאי גיבור
ג'ומלאי גיבור
 
הודעות: 1524
הצטרף: 28 יוני 2005, 18:32


חזור אל הצעות לשיפור בג'ומלה



מי מחובר

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

cron

ג'ומלה!ישראל בפייסבוק ג'ומלה!ישראל בטוויטר ג'ומלה!ישראל בגוגל+

Powered By JFBConnect

אחסון בחסות:

התחברות



התחבר/י עם פייסבוק
Powered By JFBConnect

הודעות חדשות

הרשמה לניוזלטר

הירשמו לניוזלטר וקבלו עדכונים וחדשות מג'ומלה! ישראל
captcha

מי באתר

יש באתר 1344 אורחים מחוברים