PHP: как написать файл на диск с символами Unicode

Мне нужно записать файл на диск со специальными символами ISO-8859-15. Для моих собственных целей тестирования я использовал:

– © ® ± àáâãäåæÒÓÔÕÖ¼½¾§μçðþú-.jpg

… но em-dash, en-dash и 1/2, 1/4 и 3/4 фракции были заменены мусором, когда файл был записан на диск с этим именем, в то время как другие символы в файле имя было написано правильно. Почему некоторые, а не другие ???

Вот очень простой PHP-скрипт для записи файла с только символами авторского права и em-тире в его имени. Когда я запускаю его, строка записывается в файл правильно, но em-тире имени файла заменяется мусором:

<?php // First, create a text file with the em-dash and the copyright symbol, then put the file prefix into the file: $filename1 = "000—©—©.txt"; $content1 = "000—©—©"; file_put_contents($filename1, $content1); ?> 

Каков наиболее эффективный и элегантный способ сделать это с помощью PHP (или Javascript)? Я использую только набор символов ISO-8859-15.

Большое спасибо! Том

Related of "PHP: как написать файл на диск с символами Unicode"

Я нашел свой собственный ответ. Во-первых, мне нужна кодировка WINDOWS-1252, как выясняется. Во-вторых, все, что мне нужно сделать, это использовать inconv (), преобразование из «UTF-8» в «WINDOWS-1252», например:

 <?php // First, create a text file with the em-dash and the copyright symbol, then put the file prefix into the file: $filename1 = "000—©—©.txt"; $content1 = "000—©—©"; // Judicious use of iconv() does the trick: $filename1 = iconv('UTF-8', 'WINDOWS-1252', $filename1); file_put_contents($filename1, $content1); ?> 

Мой единственный затяжной вопрос, при условии, что я тестирую это на XAMPP на своей локальной машине Windows, заключается в том, будет ли кодирование WINDOWS-1252 работать на реальных серверах в основных службах хостинга (GoDaddy и т. Д.). Если нет, существует ли другая кодировка который поддерживает все, что включено в WINDOWS-1252, но лучше подходит для локальных серверов без XAMPP?

Здесь приведен полный список кодировок, поддерживаемых iconv. Некоторые из них находятся на той же линии, что и WINDOWS-1252; означает ли это, что они взаимозаменяемы?

Большое спасибо, Том