Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Определение кодировки системы


Автор: Honoo 8.4.2008, 09:18
Доброе время суток!

Подскажите, пожалуйста, как определить кодировку системы?

Проблема в том, что сервер работает в отличной от сестемной кодировке и при выполнении file_exists() возвращается не правильный результат.
Если, например, система в cp1251, а страница в utf-8 и в file_exits() передать параметр в utf-8, то функция сработает не правильно в случает, если название содержит кириллицу.

Заранее благодарен.

Автор: mishaSL 8.4.2008, 09:46
Цитата(Honoo @  8.4.2008,  09:18 Найти цитируемый пост)
если название содержит кириллицу.

Не нужно в названиях директорий и файлов использовать кириллицу.

Автор: Honoo 8.4.2008, 10:07
Но это не выход в моем случае.

На той страничке пользователь должен закачивать файл на сервер. И пользователь не вникает надо переименовывать в латиницу или не надо, он просто тупо выбирает файл и закачивает.

Автор: mishaSL 8.4.2008, 10:22
Honoo, в данном случае необходимо делать следующим образом:
При сохранении загруженного файла автоматически его переименовываешь (можны различные варианты: случайтое число; дата+случайное число;  автоматическая транслитерация русских символов). Еще не забывай проверять на уже существование этого файла, т.к. если ты не переименовываешь файл и не проверяешь, а записываешь "как есть", то файлы с одинаковыми именами будут перезаписываться.

Автор: Honoo 8.4.2008, 10:31
Такой вариант я использовал в другой части проекта,
но в этой части пользователь дожен видеть имя файла, который закачал, таким какое оно было. Можно конечно задействовать базу, или рядом с закаченным и переименованным файликом хранить какой-нибудь тектовый файл с информацией о названии.

В Linux можно узнать кодировку выполнив exec('local'). В windows так и не нашел пока ничего.

Я хотел сделать так:
1. Узнать кодировку системы
2. Выполнять iconv() переменной, которая хранит путь к файлу.
3. И дальше уже выполнять необходиме операции file_exists(), is_file() и т.д.

Автор: mishaSL 8.4.2008, 11:31
Цитата(Honoo @  8.4.2008,  10:31 Найти цитируемый пост)
В windows так и не нашел пока ничего.

http://ru.wikipedia.org/wiki/CP1251
Код

Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows.


Но всеже, ИМХО, это не лучший вариант.

Добавлено через 2 минуты и 13 секунд
Honoo, если так важно название файла, то храни ссылки на эти файлы в БД, отдельно название, отдельно ссылка на файл.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)