Мне нужно записать файл на диск со специальными символами 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.
Большое спасибо! Том
Я нашел свой собственный ответ. Во-первых, мне нужна кодировка 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; означает ли это, что они взаимозаменяемы?
Большое спасибо, Том