[править] Общие сведенияКаждый web-мастер должен знать, что использовать русские буквы в названиях файлов нельзя, <a href="/мой_котик.jpg">котеночек</a> вы обязательно столкнетесь со множеством проблем, в том числе и проблем совместимости "кода - хостинг". Но мы то знаем, что если что-то нельзя, но хочется, значит можно. В статье пойдет речь об использовании русских букв в названиях файлов на различных платформах. [править] UNIXВсе современные обозреватели по-умолчанию передают Как это сделать.
export LANG=ru_RU.utf8 файлы будут создаваться в правильной кодировке.
cd ~/http && for FN in `find . -type f`; do NEW_FN=`echo $FN | iconv -f cp1251 -t utf8`; if [ "${FN}" != "${NEW_FN}" ]; then mv ${FN} ${NEW_FN}; fi; done
Пример: http://unix.1gb.ru/котеночек.jpg [править] Листинг каталогов в ApacheВ режиме листинга каталога, веб-сервер Apache все равно может отображать файлы/папки в неправильной кодировке (предполагается, что имена файлов и каталогов заданы в UTF-8). Пример: Чтобы исправить это, необходимо добавить в файл .htaccess следующий код: IndexOptions +Charset=UTF-8 [править] Windows[править] ApacheАналогично UNIX'у, только перекодировать имена файлов нужно через какой-то скрипт.
Пример на function convert_files ($start_dir='.') {
$files = array();
if (is_dir ($start_dir)) {
$fh = opendir ($start_dir);
while (($file = readdir ($fh)) !== false) {
if ($file == '.' || $file == '..') continue;
$filepath = $start_dir . '/' . $file;
if (is_dir ($filepath) )
$files = array_merge ($files, convert_files ($filepath));
$new_filepath = iconv ('cp1251', 'utf-8', $filepath);
if ($filepath !== $new_filepath)
rename ($filepath, $new_filepath);
}
closedir($fh);
} else {
$files = false;
}
return $files;
}
$files = convert_files('.');
[править] IIS / сервер для .NETВсе и так работает. [править] См. также
|
|






