הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   קבלת עברית בXMLHTTP לא בUTF8 (https://hosts.co.il/forums/showthread.php?t=61077)

בניה 18-03-08 21:45

קבלת עברית בXMLHTTP לא בUTF8
 
את הטקסט בצד שרת מעבירים בפונקציה:
PHP קוד:

function encodeHeb ($str) {
    return 
preg_replace("#([א-ת])#e""'#'.ord('\\1').';'"$str);


וJAVASCRIPT בצד לקוח:

קוד:

function parseHeb(text) {
var chars = Array();
chars = [
['224','א'],
['225','ב'],
['226','ג'],
['227','ד'],
['228','ה'],
['229','ו'],
['230','ז'],
['231','ח'],
['232','ט'],
['233','י'],
['234','ך'],
['235','כ'],
['236','ל'],
['237','ם'],
['238','מ'],
['239','ן'],
['240','נ'],
['241','ס'],
['242','ע'],
['243','ף'],
['244','פ'],
['245','ץ'],
['246','צ'],
['247','ק'],
['248','ר'],
['249','ש'],
['250','ת'],
];

    for(var i = 0; i < 27; i++ ) {
        while(text.indexOf("#"+chars[i][0]+";") != -1) {
            text = text.replace("#"+chars[i][0]+";", chars[i][1]);
        }
    }

    return text;
}

רק צריך להעביר את הטקסט דרך הפונקציה וזה אמור לעבוד.

Kfir.G 18-03-08 22:29

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

בכל מקרה שלא יהיה קבל ח"ח על הפירסום :)

כפיר.

בניה 18-03-08 22:42

ICONV לא יעזור, כי הוא ימיר לUTF8 ואז בצד לקוח לא יהיה לך כ"כ מה לעשות עם זה אם הדף בקידוד windows-1255 שלמקרים כאלו הקוד מיועד.


בדפדפן בפלאפון נוקיה 6120C יש XMLHTTP,וזה עובד יופי |לב|
אז אני מאמין שאפשר להתיחס לJS כאל משהו מובן מאליו כשמדברים על אתר למחשב.

Kfir.G 18-03-08 22:59

ציטוט:

נכתב במקור על ידי בניה (פרסם 617170)
ICONV לא יעזור, כי הוא ימיר לUTF8 ואז בצד לקוח לא יהיה לך כ"כ מה לעשות עם זה אם הדף בקידוד windows-1255 שלמקרים כאלו הקוד מיועד.


בדפדפן בפלאפון נוקיה 6120C יש XMLHTTP,וזה עובד יופי |לב|
אז אני מאמין שאפשר להתיחס לJS כאל משהו מובן מאליו כשמדברים על אתר למחשב.

זה תלוי בקידוד של הקובץ שבו שמרת את פונקציות הJS שמפעילות את הXMLHTTP. אני אישית ממקרה דומה לזה (שהייתי צריך להעביר עברית דרך הGET) השתמשתי בiconv ושמרתי את הקובץ של הXMLHTTP בקידוד UTF-8 וזה עבד מצויין.. אם אתה מעוניין בקישור כדי לראות בעצמך רק תגיד |winky|

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

בניה 18-03-08 23:02

בדיקת קלט רק עם JS זה אף פעם לא טוב.
למה שמישהו ירצה לעשות כזה דבר?
ואם משתמש מבטל JS זה בעייתו, גם כל האתרים החדשים היום לא יעבדו לו כמו שצריך.
לא צריך לעבוד כמו כלבים בשביל 5 גולשים משועממים.
ואשמח לקישור לזה עם הUTF8

WebProject 18-03-08 23:16

אני הצלחתי לסדר את הבעיה אצלי בפשטות, הוספתי בקוד הPHP:

header("Content-Type: text/html; charset=windows-1255");

בניה 19-03-08 11:30

ציטוט:

נכתב במקור על ידי WebProject (פרסם 617194)
אני הצלחתי לסדר את הבעיה אצלי בפשטות, הוספתי בקוד הPHP:

header("Content-Type: text/html; charset=windows-1255");

:-0
הייתי בטוח שניסיתי את זה:-D
תודה!


כל הזמנים הם GMT +2. הזמן כעת הוא 00:18.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ