Кодирование Файла изменения к utf-8 через энергию в сценарии

я просто был сбит после того, как наш сервер был обновлен от Debian 4 to 5. Мы переключились на среду UTF-8, и теперь у нас есть проблемы при получении текста, распечатанного правильно на браузере, потому что все файлы находятся в non-utf8 кодировке как iso-8859-1, ASCII, и т.д.

Я попробовал много различных сценариев.

Первый, который я попробовал, является "iconv". Тот не работает, он изменяет содержание, но файлы enconding все еще non-utf8.

Та же проблема с enca, encamv, convmv и некоторыми другими инструментами, которые я установил через Кв. - добирается.

Тогда я нашел код Python, который использует chardet Универсальный модуль Детектора, для обнаружения кодирования файла (который хорошо работает), но использование unicode класса или класса кодека для сохранения его как utf-8 не работает ни без каких ошибок.

Единственным путем я нашел для получения файла, и его содержание, преобразованное в UTF-8, vi.

Это шаги, которые я делаю для одного файла:

vi filename.php
:set bomb
:set fileencoding=utf-8
:wq

Вот именно. Тот прекрасные работы. Но как может получить это выполнение с помощью сценария. Я хотел бы записать сценарий (оболочка Linux), который пересекает каталог, берущий все php файлы, затем преобразовывая их использующий vi с командами выше. Поскольку я должен запустить vi приложение, я не знаю, как сделать что-то вроде этого:

"vi --run-command=':set bomb, :set fileencoding=utf-8' filename.php"

Надежда кто-то может помочь мне.

51
задан NovumCoder 22 February 2010 в 05:08
поделиться

2 ответа

Это самый простой из известных мне способов сделать это из командной строки:

vim +"argdo se bomb | se fileencoding=utf-8 | w" $(find . -type f -name *.php)

Или еще лучше, если ожидается, что количество файлов будет довольно большим:

find . -type f -name *.php | xargs vim +"argdo se bomb | se fileencoding=utf-8 | w"
23
ответ дан 7 November 2019 в 10:24
поделиться

Вы можете поместить свои команды в файл, назовем его script.vim :

set bomb
set fileencoding=utf-8
wq

Затем вы вызываете Vim с помощью -S (исходный код), чтобы выполнить сценарий для файла, который вы хотите исправить. Чтобы сделать это с кучей файлов, которые вы могли бы сделать

find . -type f -name "*.php" -exec vim -S script.vim {} \;

Вы также можете поместить команды Vim в командную строку, используя параметр + , но я думаю, что это может быть более читабельным.

Примечание: я не тестировал это.

16
ответ дан 7 November 2019 в 10:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: