Я пытаюсь использовать следующую строку perl, как описано здесь: Кто-нибудь знает о плагине или сценарии vim для преобразования специальных символов в соответствующие объекты HTML? - для кодирования объектов HTML в Vim.
%!perl -p -i -e 'BEGIN { use HTML::Entities; use Encode; } $_=Encode::decode_utf8($_) unless Encode::is_utf8($_); $_=Encode::encode("ascii", $_, sub{HTML::Entities::encode_entities(chr shift)});'
Он отлично работает (от £ до £, фигурные кавычки и т. д.), за исключением собственного амперсанда - & -, который остается как есть.
Я попытался удалить декодирование uf8 и просмотрел документацию CPAN для HTML::Entities.
Ответ:
@ZyX ответил на первоначальный вопрос, но, как отметили другие в комментариях, это избыточно, поскольку на самом деле нет необходимости использовать объекты HTML, если вы обслуживаете страницы с набором символов UTF-8 (что я и делаю, как с метатег -
<meta charset="utf-8">
а также в конфигурации Apache:
AddDefaultCharset utf-8
На самом деле, в таких случаях их добавление, пожалуй, плохо; размер файла больше, а текст запутан, если вы все равно хотите использовать исходный код.
Очень важно убедиться, что любой редактор(ы), который вы используете для создания файлов, также записывает их в UTF-8.
&
. Не уверен, что лучший способ исправить это в этом случае, я не знаком с этими инструментами. - person Pekka   schedule 21.05.2011set fileencoding
в vimrc бессмысленно: его значение будет перезаписано после чтения файла. Вы должны установить «fileencodings» в правильное значение (или установить его в пустую строку, если вы хотите, чтобы настройка «fileencoding» в vimrc действовала). - person ZyX   schedule 21.05.2011