Я изменяю код, как вы предложили:
Это всего лишь фрагмент:
$remote_file =$directory."/".$_FILES["image_upload_box"]["name"];
$remote_file=utf8_decode($remote_file);
imagejpeg($image_source,$remote_file,100);
chmod($remote_file,0644);
Хорошо, теперь, после загрузки изображения, имя файла правильное: Kék hegyek.jpg
Эта часть моего кода, я читаю все изображения из каталога и перечисляю их:
$images = glob("" . $directory . "*");
$imgs = '';
foreach($images as $image){ $imgs[] = "$image"; }
$imgs = array_slice($imgs, 0, 20);
foreach ($imgs as $img) {
// $img=utf8_decode($img);
echo "<form action='datasheet_edit.php' id='$img' method='post'>";
echo "<div class=\"photo\">";
echo "<img src='$img' width='100' height='50%' alt=\"\"><br>\n";
echo "<a href=\"$img\">",basename($img),"</a><br>\n</div>";
echo "<input type='hidden' id='fordelete' name='fordelete' value='$img' />";
echo "</div>\n";
echo "</form>";
}
Это хорошо работает, но указанное имя файла неверно: K :k hegyek.jpg
Я попытался использовать UTF8_DECODE здесь (без комментариев),
но так получилось: K? hegyek.jpg
После этого я попытался использовать UTF8_ENCODE и вуаля, вывод: Kék hegyek.jpg
Но, к сожалению, часть кода ссылки неверна, потому что ссылка: http://localhost/page/Kék%20hegyek.jpg.
И проблема в том, что у меня есть кнопка, с помощью которой я могу удалить изображение.
Unlink ($ файла);
Имя файла: Kék hegyek.jpg, а не Kék% 20hegyek.jpg, поэтому я не могу его удалить.
Я схожу с ума ...
Окончательное решение для меня:
- В удаленном файле заменить "пробел" на "_"
- Тогда $ remote_file = utf8_decode ($ remote_file);
- При выводе имени файла $ img = utf8_encode ($ img);
- А когда нажмите, чтобы удалить: unlink (utf8_decode ($ _ POST ['fordelete']));
Это решение - работа для меня. Я думаю, что не лучший способ декодировать-кодировать-декодировать - да, но это нормально для меня.