PHP: file_put_contents () с именем файла Unicode

Я хочу сохранить некоторые данные в файлах с именами файлов, в которых есть символы Юникода (например, китайский, кириллица, арабский, …) с помощью PHP-функции file_put_contents (). Я не хочу кодировать их отдельно с помощью чего-то вроде urlencode (), потому что ни один человек не сможет прочитать имена файлов, если они содержат только нелатинские символы. Три самые большие ОС Windows, MacOS / OS X и Linux поддерживают символы UTF-8 или UTF-16 в именах файлов и могут отображать их без проблем, но кажется, что это не так просто, как просто вызвать что-то подобное:

file_put_contents(__DIR__ . DIRECTORY_SEPARATOR . "こんにちは.txt", "");

В Windows 7 (немецкая локализация) файл хранится как:

ã“ã‚“ã«ã¡ã¯.txt

Сам файл PHP сохраняется в кодировке UTF-8. Существует ли единый способ сохранения файлов с юникодом в имени файла на этих 3 системах?

0

Решение

Как ответили Вот Это известная проблема Windows (glob () не может найти имена файлов с многобайтовыми символами в Windows?).

Вы могли бы попробовать URLify чтобы облегчить проблему только в Windows, файлы должны иметь читаемые имена …

0

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

file_put_contents(__DIR___.iconv("UTF-8", "cp1251", $filename), $data); — работает отлично!

0

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