ABA


"בעיית קידוד (כנראה) עם עריכת טקסט מידי AJAX"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #14023 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14023
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   00:10   06.06.08   
אל הפורום  
  בעיית קידוד (כנראה) עם עריכת טקסט מידי AJAX  
 
   שלום לכולם,
יש לי עמוד שבוא אני מוסיף את האופציה של עריכת טקסט במידי.
http://www.yvoschaap.com/index.php/weblog/ajax_inline_instant_update_text_20/

זה עובד והכל אבל יש משהו מוזר, בFF כל טקסט בעברית נשמר לי כג'יבריש
עם IE העברית עובדת נהדר!

מישהו יכול לעזור לי? אני כבר 5 שעות יושב על זה וכלום לא יוצא לי
:\


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אממ כמה שאלות akoka 06.06.08 10:12 1
     הנתונים בבסיס בעברית CaTz 06.06.08 11:43 2
         לא עזר לי, אני חייב להשתמש בצד של JS בescape CaTz 06.06.08 12:02 3
             אתה שולח את הנתונים עם escape ואז מכניס אותם למסד akoka 06.06.08 12:45 4
                 בדיוק CaTz 06.06.08 12:54 5
                     אממ akoka 06.06.08 13:03 6
  מצאתי פיתרון! CaTz 06.06.08 14:49 7
     מגניב :} זה לאתרים שלא עובדים בUTF-8 :} akoka 06.06.08 14:51 8
         חחח... CaTz 06.06.08 14:54 9
  תעבוד ישירות על UTF-8 זה חוסך המון בעיות וגם.. lior066 07.06.08 01:29 10
     שוב פעם, האתר שלי תומך רק בעברית ואנגלית CaTz 07.06.08 12:09 11

       
akoka

דרג אמינות חבר זה
   10:12   06.06.08   
אל הפורום  
  1. אממ כמה שאלות  
בתגובה להודעה מספר 0
 
   עם איזה קידוד עובד הדף שלך?
הקידוד של המסד הוא utf8_unicode_ci?
הטקסט נשמר במסד בעברית?

אגב אני ממליץ לך אם אתה עובד עם עברית וUTF8

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


<?php
function utf8_urldecode($str) {
$str = preg_replace("/%u({3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');;
}
?>

אני מניח שהדפים באתר שלך שמורים בUTF-8 וזה יוצר את הבעיה ,מה שקורא זה שברגע שאתה שולח נתונים בAJAX לדף אחר הם מתחרבשים איכשהו ,מה שאתה צריך לעשות בJS זה דבר ראשון להשתמש בescape לגבי כול הנתוני מחרוזת שאתה שולח בAJAX זה המקביל לurl_encode בPHP,הבעיה היא שכדי להפוך את הנתונים לנתון שאפשר לקרוא אתה לא יכול להשתמש בurl_decode כי היא לא עובדת עם UTF-8 ,ופה מגיעה הפונקציה שלי.

אני כותב לך את זה מניסיון היה לי את הבלאגן הזה בעבודה .


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   11:43   06.06.08   
אל הפורום  
  2. הנתונים בבסיס בעברית  
בתגובה להודעה מספר 1
 
   hebrew_general_ci
זה הקידוד של הבסיס, העמודים באתר הם windows 1255

אני רואה בכל מקום עברית חוץ מעם FF!

אני אנסה לשים url_decode בצד של השרת כדי לראות האם escape כן עוזר לי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   12:02   06.06.08   
אל הפורום  
  3. לא עזר לי, אני חייב להשתמש בצד של JS בescape  
בתגובה להודעה מספר 2
 
   התוצאה שמתקבלת מטקסט בעברית דומה לזה:

%u05E0%u05D9%u05D3%u05DB%u05E2%u05DB%u05D3%u05D2%u05E2

לפי מה שהבנתי זה UTF-8
ניסיתי להשתמש בפונקציה שלך וזה עדיין מחזיר לי גיבריש!
:\


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   12:45   06.06.08   
אל הפורום  
  4. אתה שולח את הנתונים עם escape ואז מכניס אותם למסד  
בתגובה להודעה מספר 3
 
   ערכתי לאחרונה בתאריך 06.06.08 בשעה 12:47 בברכה, akoka
 
עם הפונקציה ואז פשוט שולף רגיל ? וזה עדיין מחזיר ג'יבריש? מוזר

אני חושב שהבעיה היא הקידוד :| במסד ובאתר בתאכלס ,ניסית לעבור לUTF-8 ?

ולשנות את הקידוד במסד לקידוד שלי ?

תאמין לי אתה תודה על זה כול יום


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   12:54   06.06.08   
אל הפורום  
  5. בדיוק  
בתגובה להודעה מספר 4
 
   ערכתי לאחרונה בתאריך 06.06.08 בשעה 12:55 בברכה, CaTz
 
אם אני משתמש עם escape ומאכסן בבסיס נתונים ומוציא זה מציג לי את מה שרשמתי לך למעלה.
הקטע הוא שזה בשני הדפדפנים.

אם אני מוריד את הescape בשניהם זה עובד...
אבל יש לי מילים עם &# שגורמים לי לבעיות לכן אני צריך escape
:\


אני לא צריך את הUTF-8
:\

וכבר הבסיס נתונים שלי בנוי כולו + דטה בשיטה הזאת...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   13:03   06.06.08   
אל הפורום  
  6. אממ  
בתגובה להודעה מספר 5
 
   ערכתי לאחרונה בתאריך 06.06.08 בשעה 13:07 בברכה, akoka
 
תבדוק פה

http://www.w3schools.com/jsref/jsref_obj_global.asp

אני מבין את הבעיה ,אם אתה יוצר escape בjs אתה לא תוכל להפוך אותו למחרוזת רגילה בPHP זה פשוט לא יעבוד

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   14:49   06.06.08   
אל הפורום  
  7. מצאתי פיתרון!  
בתגובה להודעה מספר 0
 
   אני משתמש עם escape בצד JS, הוא מקודד לי גם את העברית!

אז מצאתי unescape מיושם בPHP מהאתר הזה:
http://www.captain.at/howto-php-urlencode-javascript-decodeURIComponent.php

והוספתי לו את הערכים של עברית!
עובד כקסם!


function unescape($string) {
$result = "";
for ($i = 0; $i < strlen($string); $i++) {
$decstr = "";
for ($p = 0; $p <= 5; $p++) {
$decstr .= $string;
}
list($decodedstr, $num) = unescapebycharacter($decstr);
$result .= urldecode($decodedstr);
$i += $num ;
}
return $result;
}

function unescapebycharacter($str) {

$char = $str;

//Hebrew adding
if ($char == '%u05D0') { return array("א", 5); }
if ($char == '%u05D1') { return array("ב", 5); }
if ($char == '%u05D2') { return array("ג", 5); }
if ($char == '%u05D3') { return array("ד", 5); }
if ($char == '%u05D4') { return array("ה", 5); }
if ($char == '%u05D5') { return array("ו", 5); }
if ($char == '%u05D6') { return array("ז", 5); }
if ($char == '%u05D7') { return array("ח", 5); }
if ($char == '%u05D8') { return array("ט", 5); }
if ($char == '%u05D9') { return array("י", 5); }
if ($char == '%u05DB') { return array("כ", 5); }
if ($char == '%u05DA') { return array("ך", 5); }
if ($char == '%u05DC') { return array("ל", 5); }
if ($char == '%u05DE') { return array("מ", 5); }
if ($char == '%u05DD') { return array("ם", 5); }
if ($char == '%u05E0') { return array("נ", 5); }
if ($char == '%u05DF') { return array("ן", 5); }
if ($char == '%u05E1') { return array("ס", 5); }
if ($char == '%u05E2') { return array("ע", 5); }
if ($char == '%u05E4') { return array("פ", 5); }
if ($char == '%u05E3') { return array("ף", 5); }
if ($char == '%u05E6') { return array("צ", 5); }
if ($char == '%u05E5') { return array("ץ", 5); }
if ($char == '%u05E7') { return array("ק", 5); }
if ($char == '%u05E8') { return array("ר", 5); }
if ($char == '%u05E9') { return array("ש", 5); }
if ($char == '%u05EA') { return array("ת", 5); }

if ($char == '%u20AC') { return array("%80", 5); }
if ($char == '%u201A') { return array("%82", 5); }
if ($char == '%u0192') { return array("%83", 5); }
if ($char == '%u201E') { return array("%84", 5); }
if ($char == '%u2026') { return array("%85", 5); }
if ($char == '%u2020') { return array("%86", 5); }
if ($char == '%u2021') { return array("%87", 5); }
if ($char == '%u02C6') { return array("%88", 5); }
if ($char == '%u2030') { return array("%89", 5); }
if ($char == '%u0160') { return array("%8A", 5); }
if ($char == '%u2039') { return array("%8B", 5); }
if ($char == '%u0152') { return array("%8C", 5); }
if ($char == '%u017D') { return array("%8E", 5); }
if ($char == '%u2018') { return array("%91", 5); }
if ($char == '%u2019') { return array("%92", 5); }
if ($char == '%u201C') { return array("%93", 5); }
if ($char == '%u201D') { return array("%94", 5); }
if ($char == '%u2022') { return array("%95", 5); }
if ($char == '%u2013') { return array("%96", 5); }
if ($char == '%u2014') { return array("%97", 5); }
if ($char == '%u02DC') { return array("%98", 5); }
if ($char == '%u2122') { return array("%99", 5); }
if ($char == '%u0161') { return array("%9A", 5); }
if ($char == '%u203A') { return array("%9B", 5); }
if ($char == '%u0153') { return array("%9C", 5); }
if ($char == '%u017E') { return array("%9E", 5); }
if ($char == '%u0178') { return array("%9F", 5); }

$char = substr($str, 0, 3);
if ($char == "%20") { return array("+", 2); }

$char = substr($str, 0, 1);

if ($char == '*') { return array("%2A", 0); }
if ($char == '+') { return array("%2B", 0); }
if ($char == '/') { return array("%2F", 0); }
if ($char == '@') { return array("%40", 0); }

if ($char == "%") {
return array(substr($str, 0, 3), 2);
} else {
return array($char, 0);
}
}

תהנו!


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
akoka

דרג אמינות חבר זה
   14:51   06.06.08   
אל הפורום  
  8. מגניב :} זה לאתרים שלא עובדים בUTF-8 :}  
בתגובה להודעה מספר 7
 
   באתרים שכן עובדים הפונקציה שלי תעבוד כמו קסם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   14:54   06.06.08   
אל הפורום  
  9. חחח...  
בתגובה להודעה מספר 8
 
   המון זמן שברתי את הראש על זה!
:{


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
lior066

דרג אמינות חבר זה
   01:29   07.06.08   
אל הפורום  
  10. תעבוד ישירות על UTF-8 זה חוסך המון בעיות וגם..  
בתגובה להודעה מספר 0
 
   זה יותר גלובלי , ככה שאם תרצה להוסיף שפות נוספות לאתר לא יהיה לך בעייה זה כל הקטע ב UTF שהוא בינלאומי..

בכל מקרה מומלץ לעבור ל UTF-8 אפילו אם העבודה קשה...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
CaTz
חבר מתאריך 2.10.04
14537 הודעות, דרג אמינות חבר זה
   12:09   07.06.08   
אל הפורום  
  11. שוב פעם, האתר שלי תומך רק בעברית ואנגלית  
בתגובה להודעה מספר 10
 
   אין לי צורך ביותר מזה.

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net