PHP - переименовать файл с японскими символами

Почему следующий код ошибочно переименовывает 1.txt в 一.txt.txt и не 一.txt?

rename('1.txt','一.txt');

2 ответа

Ах, радость смешанного кодирования. Ошибка может быть где угодно, в вашей файловой системе, в вашей сетевой кодировке, в вашей оболочке, в вашем редакторе, в вашем файловом менеджере, даже в терминале, неправильно интерпретирующем символы,...

Пожалуйста, убедитесь, что все говорят одинаково. Обычно это исправляется путем запуска с правильными переменными среды. Обратите внимание на тот факт, что PHP на самом деле ничего не делает с символами имени файла, поэтому, если вы не используете строковые функции для работы со строками (которые, к сожалению, все еще совместимы только с однобайтовыми строками), вам не следует не будет особых проблем с PHP.

Главным образом из-за несоответствия кодировки. Ваш скрипт должен использовать правильную кодировку, и эта кодировка должна соответствовать кодировке файловой системы. Если одно из этих несоответствий (обычно сценария), то вы получите описанный эффект. Убедитесь, что вы используете ту же кодировку, или замените свое "встроенное" имя (к вашему сведению, имя вашего целевого файла выглядит здесь как "-.txt", где "-" - длинная черта) на числовую сущность.

Другие вопросы по тегам