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

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

hi_sorie 19-11-10 18:41

קידוד קבצים ! בעיה שמשגעת אותי
 
קיבלתי קבצים של מערכת שמישהו אחר בנה.
כל הקבצים מקודדים תחת ANSI ואני רוצה להפוך אותם ל utf-8 ללא bom

הנה הסקריפט שבניתי :

PHP קוד:

<?
function ReadFolderDirectory($dir)
    {
        
$listDir = array();
        if(
$handler opendir($dir)) {
            while ((
$sub readdir($handler)) !== FALSE) {
                if (
$sub != "." && $sub != ".." && $sub != "Thumb.db") {
                    if(
is_file($dir."/".$sub)) {
                        
$fileinit file_get_contents($dir."/".$sub);

                            
$fileinit utf8_encode($fileinit);

                        
$fileinit file_put_contents($dir."/".$sub,$fileinit);
                        
$listDir[] = $sub;
                    }elseif(
is_dir($dir."/".$sub)){
                        
$listDir[$sub] = ReadFolderDirectory($dir."/".$sub);
                    }
                }
            }   
            
closedir($handler);
        }
        return 
$listDir;   
    } 
    

print_r(ReadFolderDirectory("**********/public_html"));

?>

הוא פולט בצורה יפה את כל הקבצים ותת הקבצים + תיקיות ותיקיות משנה.

הוא עושה את ה convert בצורה טובה ...
אבל יוצא לי עדיין גיבריש !@!@!

Daniel 20-11-10 10:01

אני משער שהסיבה היא:
"utf8_encode — Encodes an ISO-8859-1 string to UTF-8"

BlueNosE 20-11-10 11:05

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

function iconv_cp1255_utf8 ($cp1255) {
return 
preg_replace("/([\xE0-\xFA])/e","chr(215).chr(ord(\${1})-80)",$cp1255);



בניה 20-11-10 11:47

יש את ICONV שעובדת יופי, אני מאמין שהיא תהיה יותר יעילה.
PHP קוד:

$utf8texticonv('windows-1255''UTF-8'$win1255text); 


BlueNosE 20-11-10 20:33

פעם אחרונה שהשתמשתי בICONV עם WIN-1255 זה עשה לי בעיות, אבל זה היה מזמן, אולי זה היה בגלל שימוש לא נכון שלי.


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

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