PHP: Как записать файл на диск с символами Юникода
Мне нужно записать файл на диск со специальными символами ISO-8859-15. Для собственных целей тестирования я использовал:
- ©®±àáâãäåæÒÓÔÕÖ¼½¾§μçðþú-.jpg
... но дроби em-dash, en-dash, а также дроби 1/2, 1/4 и 3/4 были заменены на мусор, когда файл записывался на диск с этим именем, а остальные символы в файле имя было написано правильно. Почему одни, а не другие???
Вот очень простой PHP-скрипт для записи файла с только символами авторского права и тире в его имени. Когда я запускаю его, строка записывается в файл правильно, но тире имени файла заменяются мусором:
<?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.
Большое спасибо! Том
1 ответ
Я нашел свой ответ. Для начала мне нужна кодировка 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; это означает, что они взаимозаменяемы?
Большое спасибо, Том