Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Локаль и readdir()
 
 автор: demonow   (30.01.2012 в 13:54)   письмо автору
 
 

Народ, как обьяснить данное поведение:
Вот код
$path=opendir("image");
while(false!==($a=readdir($path)))
{
echo $a."<br>";
}

Сам файл у меня в кодировке windows-1251, и там где выводится название файлов на русском оно выводит закарлючки.
Есть предположение. что это потому-что локаль у меня везде в UTF-8, и операционка сохраняет название файлов и папок в этой кодировке, а сам файл просматривается другй кодировкой, но я не уверен.

  Ответить  
 
 автор: cheops   (30.01.2012 в 14:16)   письмо автору
 
   для: demonow   (30.01.2012 в 13:54)
 

Да, конечно, ваше предположение абсолютно верно, локаль определяет в какой кодировке операционная система будет отдавать названия файлов системным вызовам (а те функциям PHP).

PS По крайней мере так обстоит дело в Linux, в Windows ситуация посложнее: начиная с Windows 2000 существует два набора API-функций, один возвращает имена в однобайтовой кодировке, другой в UTF-16, нужно в исходных кодах смотреть как там PHP с ними обходится и что вызывает... не знаю как сейчас, но помоему под Windows в PHP долгое время вместо setlocale() была просто заглушка и функция ничего не делала.

  Ответить  
 
 автор: demonow   (30.01.2012 в 14:23)   письмо автору
 
   для: cheops   (30.01.2012 в 14:16)
 

спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования