Unicode — PHP работает с персидскими символами в scandir () и rename ()

Я работаю с парой файлов, перечисленных в папке с именем states,
Вот пример, где мои файлы точно расположены:
root/states/state_name/type_name/city_name.txt
В этой структуре есть несколько штатов, городов, типов и файлов.
Я хочу найти каждый city Id в моей базе данных, затем переименуйте city_name.txt в city_id.txt

Вот что я сделал, чтобы сделать эту работу:

header('Content-type: text/html; charset=utf-8');
include('dbclass/Db.class.php');
$db=new DB();
$states=scandir('states');
foreach($states as $state)
{
if($state=='.'||$state=='..')
continue;
$state_id=$db->row('SELECT id FROM target_state WHERE state=:state',array('state'=>$state));
if(!$state_id)
continue;
$types=scandir('states/'.$state);
foreach($types as $type)
{
$cities=scandir('states/'.$state.'/'.$type);
foreach($cities as $city)
{
$city_id=$db->row('SELECT id FROM target_city WHERE state_id=:state_id AND city=:city',array('state_id'=>$state_id['id'],'city'=>$city));
rename('states/'.$state.'/'.$type.'/'.$city.'.txt','states/'.$state.'/'.$type.'/'.$city_id['id'].'.txt');
}
}
}

Это не сработало вообще!
$state_id возвращает ложь и foreach переходит в следующее состояние.
Я попытался отобразить $ state в каждом цикле и вернул несколько �������� � � персонажи.

Моя проблема в том, что PHP scandir() возвращает персидские имена файлов в неправильном Unicode.

Я пытался добавить header поверх моего кода тоже, но он не вносит никаких изменений.

Любые предложения и комментарии приветствуются!

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]