Как переименовать файлы с арабскими именами файлов - Ошибка недопустимой последовательности байтов

Я знаю, что есть похожие вопросы по этой теме, но, к сожалению, ни один из них не решил мою проблему.

Я просто хочу переименовать файл с арабским именем.

Например, файл с именем «ملف.txt», определенно существующий в той же папке, в которой находится мой скрипт.

переименовать('ملف.txt','File.txt');

Это дает: переименовать (ملف.txt, File.txt) [function.rename]: нет такого файла или каталога

После некоторого поиска в Google я узнал, что я должен использовать:

$temp = iconv('utf-8', 'cp1252', 'ملف.txt');

переименовать($temp,'File.txt');

Это дает:

rename(,File.txt) [function.rename]: недопустимая последовательность байтов

Я также пытался использовать urlencode, но это дало:

rename(%D9%85%D9%84%D9%81.txt,File.txt) [function.rename]: Нет такого файла или каталога

Некоторая помощь будет оценена


person Haz    schedule 04.07.2013    source источник
comment
Ответ может во многом зависеть от ОС. Можете ли вы обновить вопрос с этой информацией?   -  person Leri    schedule 04.07.2013
comment
Привет @PLB, спасибо за твое время, я в Windows, используя локальный сервер xamp   -  person Haz    schedule 04.07.2013
comment
stackoverflow.com/questions/11243863/   -  person Andrej Bestuzhev    schedule 04.07.2013
comment
Да, я читал этого @AndrejBestuzev, но я не совсем понял, что он сделал, он говорит об изменении чего-то в своем коде, но у меня нет никакого кода, только эта простая команда, я пробовал basename(), но не работать либо   -  person Haz    schedule 04.07.2013
comment
Вы вставляли имя файла в свой код или читали его в переменную раньше?   -  person Andrej Bestuzhev    schedule 04.07.2013
comment
@AndrejBestuzev Пробовал и то, и другое, даже из базы данных, все не работает   -  person Haz    schedule 04.07.2013


Ответы (2)


напишите этот код:

$newName  = iconv("utf-8", "cp1256","السلام عليكم.txt");
rename("file.txt", $newName);
person mohamed isam    schedule 10.12.2018
comment
Можно немного подробнее об ответе? Сначала трудно сказать, каково ваше решение. Я полагаю, что это используемая кодировка? Можете ли вы также добавить свой результат запуска примера кода? Действительно работало? - person Michal Trojanowski; 11.12.2018
comment
Этот метод переименовывает файл в имя в арабской кодировке и действителен только в системе Windows. - person mohamed isam; 11.12.2018

Этот пример должен помочь, я тестирую приведенный ниже код, и он работает в Windows для арабских/персидских имен:

iconv("UTF-8", "CP1256//IGNORE","گچپژ");
echo rename("1.txt", $newname);
person MSS    schedule 19.04.2015