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

Статус
В этой теме нельзя размещать новые ответы.

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
Принудительнов всем 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. С английскими именами файлов - все путем.
Как это обойти?
 
попробуй url_decode() если GETом шлеш запрос. А вообше пришли var_dump ГЕТа или ПОСТа (смотря чем запрос делаешь) из скрипта, на который идет этот запрос.
 
Это все стоит и даже более.
setlocale(LC_ALL, 'ru_RU.UTF8');
mb_internal_encoding("UTF-8");
mb_regex_encoding("UTF-8");
header('Content-type: text/html; charset=utf-8');
Друг подсказал rawurlencode() без перекодировки в utf-8 имен файлов. Все заработало.

не подошел.


Осталась непонятка почему при обходе директории список файлов передается в 1251, а не в утф-8.
 
Неверный вопрос ))
Осталось понять на какой OS установлен Apache. Если мелкомягкий то у них вообще то стандартная кодировка на всем win-1251 !
 
Operating System Linux CentOS

Я почему-то представлял себе, что если работаешь в utf, то все данные от сервера будут приходить в utf.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху