[php] Проблемы с кодировкой при выводе русских имен

S
На сайте с 06.08.2008
Offline
130
917

Необходимо вывести русские имена файлов из папки. Выводится в кривой кодировке :(

Что только не пробовал делать - на винде работает нормально, на серваке нет :(

Пробовал так:

$dir = "../files/";
$name = scandir($dir);
for($i=2; $i<=(sizeof($name)-1); $i++) {
echo substr(iconv("windows-1251", "UTF-8", $name[$i]), 0, -3)."<br/>";
}

И так:

if ($handle = opendir('../files/')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo substr(iconv("cp1251", "UTF-8", $file), 0, -3)."<br/>";
}
}
closedir($handle);
}

Файлы и скрипт в UTF-8.

AddDefaultCharset utf-8 в хтаццесс прописан..

Подскажите как победить?

png 157243.png
Joker-jar
На сайте с 26.08.2010
Offline
171
#1

А если вообще не перекодировать?

dma84
На сайте с 21.04.2009
Offline
168
#2
Joker-jar:
А если вообще не перекодировать?

Всё верно, на винде имена файлов в кодировке cp1251, на *nixовых серверах - utf8

dag
На сайте с 10.02.2007
Offline
214
dag
#3

Тоже сижу разбираюсь с аналогичным вопросом - нужно записать в xml список имен файлов из каталога. Пока нет русских букв - все отлично, пишется в utf-8 (на *nixовых серверах). Как только попадается какой нибудь "катя.jpg" - все, на выходе получаем windows-1251.

При этом и в phpinfo везде utf-8, и mb_detect_encoding для строки, которая будет записана, тоже говорит что она utf-8... А пишем ее в файл и упс. Обратно корректно прочесть его можно только в windows-1251 (((

S
На сайте с 30.09.2016
Offline
469
#4

Картинка с крякозябрами ведь из браузера получена? Может быть, там не то прописано?

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
S
На сайте с 06.08.2008
Offline
130
#5
Joker-jar:
А если вообще не перекодировать?

Гениально!

Я второй день голову ломаю...🤣

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий