הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 01-04-07, 03:54   # 1
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

לכל המתכנתים שעובדים עם UTF8

אני רוצה להדגיש כמה בעיות שאני בטוח שכמעט כולכם לא יודעים על UTF8 ומחרוזות

כל הדוגמאות יצאו מתוך הנחה שהמחרוזת ב UTF8

דוגמא א' :

PHP קוד:
$string =  'אאאאב';
echo 
strlen($string); 
הפלט של STRLEN (למי שלא יודע זה פונקציה שמחשבת אורך מחרוזת) יהיה 10
כן 10 ולא 5. הסיבה : STRLEN קורא את UTF8 כ 2 ביטים לכל אות.

הפתרון :בהמשך.

דוגמא ב' :
PHP קוד:
$string =  'אאאאב';
echo 
substr($string,0,3); 
פלט רצוי : אאא
פלט שמתקבל : א�אאאאב.
הסיבה : SUBSTR לא יודע לחתוך את האותיות כמו שצריך ולכן יש אותיות שנחתכות באמצע ועושות בלגן

עקרונית אפשר להמשיך ככה עד מחר...
את הפתרון אני אשאיר לכם למצוא בעזרת גוגל.
יום נעים שיהיה לכם.
  Reply With Quote
ישן 01-04-07, 04:26   # 2
mlnn
משתמש - היכל התהילה
 
mlnn's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: בחדר של חני
גיל: 34
הודעות: 4,417

mlnn לא מחובר  

iconv? =\
מעניין :P
__________________
.

בחורות ערומות
  Reply With Quote
ישן 01-04-07, 09:30   # 3
Meir
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
גיל: 33
הודעות: 383

Meir לא מחובר  

הפתרון פשוט: http://il2.php.net/manual/en/ref.mbstring.php
__________________
רק אחרי שנמצאים בחושך, אפשר להעריך את האור.
  Reply With Quote
ישן 01-04-07, 09:35   # 4
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

אפשר להמיר את המחרוזת לקידוד רגיל, לעבוד עליה ואז להמיר לUTF8(אפשרי אם יש בה רק עברית ואנגלית)
ויש בPHP
http://www.php.net/manual/en/ref.mbstring.php
(פונקציות לעבודה על מחרוזות שכל תו אמור להיות 2byte)
רק חבל שזה לא מובנה בתוך המנוע וצריך לאפשר את זה.
וראיתי באתר phpclasses (אתר ששווה להציץ בו תמיד!)
מחלקה שיכולה לעשות את העבודה:
http://www.phpclasses.org/browse/file/16999.html
  Reply With Quote
ישן 01-04-07, 11:09   # 5
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

ציטוט:
נכתב במקור על ידי elbaz.maor צפה בהודעה
ידוע .... הבעיה היא שלא כל שרת תומך בזה ואתה לא יכול לשלב את זה ב PRODUCTION

חיפוש לא ארוך מעלה את התוצאות הבאות :

PHP קוד:
function utf8_substr($str,$from,$len)
{
  return 
preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
                       
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
                       
'$1',$str);

עבור STRLEN :

PHP קוד:
function utf8_strlen($str)    {
  
$n=0;
  for(
$i=0; isset($str{$i}) && strlen($str{$i})>0$i++)    {
    
$c ord($str{$i});
    if (!(
$c 0x80))    // single-byte (0xxxxxx)
      
$n++;
    elseif ((
$c 0xC0) == 0xC0)    // multi-byte starting byte (11xxxxxx)
      
$n++;
  }
  return 
$n;
}

function 
utf8_strlen($str)
    {
    
$count 0;

    for(
$i 0$i strlen($str); $i++)
        {
        
$value ord($str[$i]);
        if(
$value 127)
            {
            if(
$value >= 192 && $value <= 223)
                
$i++;
            elseif(
$value >= 224 && $value <= 239)
                
$i $i 2;
            elseif(
$value >= 240 && $value <= 247)
                
$i $i 3;
            else
                die(
'Not a UTF-8 compatible string');
            }
       
        
$count++;
        }
   
    return 
$count;
    }

// choice 1
function utf8_strlen($str) {
  
$count 0;
  for (
$i 0$i strlen($str); ++$i) {
    if ((
ord($str[$i]) & 0xC0) != 0x80) {
      ++
$count;
    }
  }
  return 
$count;
}

// choice 2
function utf8_strlen($str) {
  return 
preg_match_all('/[\x00-\x7F\xC0-\xFD]/'$str$dummy);

יש עוד כמה פונקציות שעושות בעיות עם UTF8
כמובן שאם יש MBSTRING זה מומלץ
  Reply With Quote
ישן 01-04-07, 15:33   # 6
Startzero.net
חבר מתקדם
 
Startzero.net's Avatar
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
מיקום: מאחוריך.
הודעות: 737

Startzero.net לא מחובר  

הכי פשוט להשתמש ב Windows-1255, בחיים לא השתמשתי ב UTF8
__________________

www.Startzero.net
פיתוח אתרים | תכנות אתרים | עיצוב אתרים | קידום אתרים

  Reply With Quote
ישן 01-04-07, 17:52   # 7
Unknown
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 35
הודעות: 189

Unknown לא מחובר  

ציטוט:
נכתב במקור על ידי startzero.net צפה בהודעה
הכי פשוט להשתמש ב Windows-1255, בחיים לא השתמשתי ב UTF8
פשוט זה ברור, אבל אז האתר שלך יתמוך בשפה אחת בלבד
UTF משמש לרוב לאתרים מרובי שפות, הכנה לריבוי שפות, בחלק מהמקרים קידום אתרים
וגם, מאפשר הרבה יותר אופציות בעתיד

וסתם חוסך עבודה אח"כ
__________________
מתכנת מקצועי (ידוע גם כUnknownGod)
שנות נסיון רבות בפיתוח אתרים ואפליקציות WEB
  Reply With Quote
ישן 01-04-07, 18:19   # 8
somebody
A Al Alm Almo Almog!
תודה על תרומתך!
 
somebody's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: hadera CiTy
גיל: 33
הודעות: 4,005
שלח הודעה באמצעות MSN אל somebody

somebody לא מחובר  

אני לא יודע מי אלו כל המתכנתים שאתה מדבר עליהם..
אבל אני עובד עם ASP, ולא נתקלתי בשום בעיה בעבודה עם UTF-8 עם פונקציות מחרוזות.
__________________
דוא"ל: almog.zimel ב ג'מייל נקודה קום
מסנג'ר: almog שטרודל freetopsite נקודה co נקודה il

  Reply With Quote
ישן 01-04-07, 18:34   # 9
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

אם אין צורך מיוחד, לדעתי לא כדאי לעבוד עם UTF 8.
כי כל תו בעברית לוקח פי 2 מקום וזה קריטי במיוחד אם שומרים את המידע במסד נתונים ככה.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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