我試圖使用下面一行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