我试图使用下面一行perl,如下所述:Does anyone know of a vim plugin or script to convert special characters to their corresponding HTML entities? - 在Vim中编码HTML实体。HTML ::实体编码和单个&符号
%!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解码,并查看了HTML :: Entities的CPAN文档。
答:
@ZyX已经回答了原来的问题,但其他人的评论指出,这是多余的,因为它不是真正需要使用HTML实体,如果你是一个UTF服务页面-8字符集(这我,既与meta标签 -
<meta charset="utf-8">
,并在Apache配置:
AddDefaultCharset utf-8
事实上,在这种情况下添加它们确实是一件坏事;文件大小较大,文本混淆无论如何都要使用源代码。
确保您用来创建文件的任何编辑器都以UTF-8格式编写它是非常重要的。
出于好奇,为什么你在第一时间做这个 – 2011-05-21 11:28:51
我正在学习Vim - 经常需要将Word文档和其他源文件用智能引号,撇号,货币等转换为格式正确的HTML。花了一段时间寻找Vim插件 - 对他们来说似乎并没有太多共识。 (a)很短(b)使用HTML :: Entities,而不是重新发明轮子,很多人似乎都试图去...... – 2011-05-21 11:32:13
啊,够公平的。 (在所有情况的90%中,人们使用实体来解决编码问题,在这种情况下,我的标准答案是“修改编码问题”,因此是我的问题。)问题是,在HTML中,&字符是转义字符为实体。所以每个*真正*符号需要被转义为'&'。不知道在这种情况下修复它的最佳方法是什么,但我不熟悉这些工具 – 2011-05-21 11:33:45