iconv в Mac OS X 10.7.3 ничего не делает
Я пытаюсь преобразовать php-файл (client.php) из utf-8 в iso-8859-1, и следующая команда ничего не делает с файлом:
iconv -f UTF-8 -t ISO-8859-1 client.php
После выполнения отображается исходное содержимое файла.
Фактически, когда я проверяю кодировку файла после выполнения iconv с:
файл -I client.php
Тот же старый utf-8 показан:
client.php: text / x-php; кодировка = UTF-8
3 ответа
Утилита iconv преобразует кодировку символов в файле из одного набора кодов в другой и записывает результаты в стандартный вывод.
Вот решение: записать стандартный вывод во временный файл и переименовать временный файл
iconv -f UTF-8 -t ISO_8859-1 client.php > client_temp.php && mv -f client_temp.php client.php
ASCII, UTF-8 и ISO-8859 - это 100% идентичные кодировки для самых младших 128 символов. Если ваш файл содержит только символы в этом диапазоне (который в основном представляет собой набор символов, которые вы найдете на обычной английской клавиатуре США), нет никакой разницы между этими кодировками.
Я думаю, что происходит: простой текстовый файл не имеет связанных метаданных кодирования. Вы не можете узнать кодировку простого текстового файла, просто взглянув на него. Что за file
Утилита просто выдвигает свою лучшую догадку, и, поскольку нет разницы, она предпочитает сообщать вам, что файл имеет кодировку UTF-8, что технически вполне может быть.
В дополнение к jackjr300 со следующим One-Liner вы можете сделать это для всех файлов php в текущей папке:
for filename in *.php; do iconv -f ISO_8859-1 -t UTF-8 $filename > temp_$filename && mv -f ./temp_$filename ./$filename; done