星期四, 12月 18, 2008

HTML Tidy Eclipse中文處理

最近有訂閱在下的巴布/Twitter的朋友,應該知道小弟這幾天想把企業內部的IE only網頁改成標準符合W3C語法,並將舊的big5網頁改為utf-8。除了難搞的IE DHTML和標準DOM差很多之外,早期全大寫的html tag在Aptana看到實在很不順眼,還有屬性內容沒有加上"或',就興起找工具來處理的念頭。

最有名的工具當然就是HTML Tidy,中文預設輸出成unicode表示法,但還是可以加上 -utf8 的參數強制輸出成 utf-8。

Aptana 1.2.0版之後內建很類似HTML Tidy Eclipse Plug-in的HTML Tidy功能,居然也有相同的Bug:設定成utf-8後中文輸出亂碼。

由於HTML Tidy Eclipse Plug-in使用JTidy這個2001年之後沒動過的project,於是就從這裏下手。(警告:以下hack非常dirty,而且只在utf-8編碼系統有效,只在Ubuntu上成功,Win32無效)

下載jtidy-04aug2000r7-dev.zip解開後,
在jtidy-04aug2000r7-dev/src/org/w3c/tidy/Configuration.java第471列,把int result = ASCII; 改成 int result = UTF8;
另外Aptana版的HTML Tidy不能關掉generator訊息,因此我把 Lexer.java第522列的addGenerator(Node root)裏的內容直接改成 return true;
在編輯時會有enum是keyword的錯誤訊息,所以再改Configuration.java第126~129頁的enum變數名稱為enu。
接下來在jtidy-04aug2000r7-dev目錄下輸入 ant 命令就會在build目錄下產生Tidy.jar。
把新做的Tidy.jar覆蓋aptana/plugins/com.aptana.ide.libraries_1.2.1.18697 (隨著版次數字會變)下的Tidy.jar即可。(這裏放一份我做的)

在Win32下要改編碼建議用ConvertZ,在Linux當然就用iconv,轉碼為UTF-8後就直接用Aptana編輯,Run HTML Tidy後若不習慣Tidy的縮排方式,再Format一次後HTML碼就很漂亮(為什麼Aptana不能直接整合呢?)。

沒有留言: