За последние 24 часа нас посетили 19274 программиста и 1646 роботов. Сейчас ищет 921 программист ...

PHP и диакритика

Тема в разделе "Прочие вопросы по PHP", создана пользователем LanzeTTe, 8 сен 2013.

  1. LanzeTTe

    LanzeTTe Новичок

    С нами с:
    8 сен 2013
    Сообщения:
    2
    Симпатии:
    0
    Столкнулся с проблемой, что PHP не воспринимает файлы с диакритикой (спецсимволы западноевропейских языков, например, немецкие ä,ü). То есть при листинге каталога readdir() эти файлы не попадают в список, при попытке копирования copy() - файл также определяется несуществующим. Подскажите, пожалуйста, где копать истоки этой проблемы, так как надо или её решить или дать пруф заказчику, что она нерешаема (пусть не пишут в названиях эти символы). Решения методом замены символов не подойдут сразу, так как файлы загружаются внешней программой, и я их уже никак не могу прочитать.
     
  2. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Какая операционная система?
    Если линукс, то локаль?
     
  3. LanzeTTe

    LanzeTTe Новичок

    С нами с:
    8 сен 2013
    Сообщения:
    2
    Симпатии:
    0
    нет, винда

    Добавлено спустя 20 минут 47 секунд:
    пока проблема решена c использованием Com объекта:
    Код (Text):
    1. $fso = new Com('Scripting.FileSystemObject', null, CP_UTF8);
    2.  foreach ($fso->getFolder(<имя_каталога_откуда>)->files as $file_ar)
    3.  {
    4.     $file = $file_ar->name;    
    5.           $fso->copyFile($file, <имя_каталога_куда>);
    6. }
    Но хотелось бы услышать по поводу самого PHP.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну пхп для линукса. то что он на винде сносно работает - уже большое чудо.
     
  5. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    Насколько я помню, NTFS хранит имена файлов в UTF16, сишный fopen читает их как ANSI, php тут не при делах.
    Для работы с юникодными именами файлов под виндой придется разбрасываться костылями.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Всего одним - виртуалкой с линупсом :) Все равно боевой сервер будет линушный с вероятностью 99999999%. Так зачем костылить код под винду, если проще поднять линь?