php не понимает русских букв при обращении к файлу

Тема в разделе "PHP", создана пользователем dandandan, 26 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Принудительнов всем php файлам кодировку утф 8 задаю. (По умолчанию она вроде называется Западноевропейская. В заподноевропейской - русские буквы - крякозяблы.)
    Задача - переконвертировать массово картинки из директории.
    Делаю обход директории с картинками. По умолчанию почему-то выдаются имена файлов в кодировке 1251 .
    Почему ?

    PHP:
    function get_files_from_dir($dir){
        if (
    $handle opendir($dir)) { 
            
    $countNumFila=0;
            
    $txt='<table width="100%" border="0">';
            while (
    false !== ($file readdir($handle))) { 
            
    //echo $file;
                
    if ($file != "." && $file != "..") { 
                    if ((
    is_file($dir.'/'.$file)) && ($file!='.htaccess') ){
                        
    $massiv_image[]=$countNumFila;
                        
    $txt.='<tr>
                                    <td align="left"><a href="../../uploadimages/'
    .iconv('cp1251''UTF-8'$file).'" title="'.iconv('cp1251''UTF-8'$file).'" target="_blank" id="fileid'.$countNumFila.'">'.iconv('cp1251''UTF-8'$file).'</a></td>
                                    <td align="left" id="formaid'
    .$countNumFila.'">&nbsp;</td>
                                </tr>'
    ;
                        
    $countNumFila++;
                        }
                    } 
                } 
            
    closedir($handle); 
            
    $txt.='</table>';

            
    $txt1='Всего файлов: '.$countNumFila.'<br /><br /><input name="df" type="button" value="Начать загрузку" onmousedown="begin_upload_files(\''.@implode('_'$massiv_image).'\');" />';

            }
        
        return    
    $txt1.$txt.$txt1;
        }

    Далее полученные имена файлов по одному передаются скрипту (аяксом). Выдергивается href с ссылки. PHP скрипт не может получить русские имена файлов для выполнения imagecreatefrompng или jpg или gif. С английскими именами файлов - все путем.
    Как это обойти?
     
  2. horpah

    horpah

    Регистр.:
    21 июн 2010
    Сообщения:
    200
    Симпатии:
    55
    попробуй url_decode() если GETом шлеш запрос. А вообше пришли var_dump ГЕТа или ПОСТа (смотря чем запрос делаешь) из скрипта, на который идет этот запрос.
     
  3. CrashX

    CrashX В прошлом XSiteCMS

    Регистр.:
    6 июн 2008
    Сообщения:
    682
    Симпатии:
    112
    .htaccess
    в index.php
     
  4. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Это все стоит и даже более.
    Друг подсказал rawurlencode() без перекодировки в utf-8 имен файлов. Все заработало.

    не подошел.


    Осталась непонятка почему при обходе директории список файлов передается в 1251, а не в утф-8.
     
  5. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Неверный вопрос ))
    Осталось понять на какой OS установлен Apache. Если мелкомягкий то у них вообще то стандартная кодировка на всем win-1251 !
     
  6. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Operating System Linux CentOS

    Я почему-то представлял себе, что если работаешь в utf, то все данные от сервера будут приходить в utf.
     
Статус темы:
Закрыта.