Source Insight完美轉換UTF-8 到 GB2312文/蒹葭
前言
很多人用source insight 打開某些源碼文件時,漢字顯示為一堆亂碼。這個問題是因為編碼方式不同。記事本和一些編輯器默認編碼方式是ANSI,在這種方式下輸入漢字,其實就是GB系列的編碼方式。不幸的是,廣收歡迎的代碼查看工具Source insight 雖然支持漢字,但是它不支持UTF-8。筆者感到疑惑的是,當初開發source insight的這幫人現在哪里去了?為何不繼續開發?這么好的工具,卻不再更新了,實在讓人可惜。
可惜歸可惜,程序還是要看。亂碼怎么辦?很多人用笨方法,用記事本打開源代碼,再另存為ANSI格式的文件。如果文件只有幾個,倒是既簡單又實惠,然而,當你碰到成百上千的代碼文件都是UTF-8時,你就會覺得這是夢魘了。
不過,不要怕。現在,完美的解決方法來了。(貌似跟做廣告一樣)
概述
本程序是參考網上源代碼修改而成。感謝原作者將該代碼開源,我的工作只需在他的基礎上進行修改就可以了,省去了大量的工作,使得我花了一個下午的時間就改成我所想要的程序。這就是開源的好處。所以說開源能幫助人們更快的開發出更好的軟件,開源萬歲。希望看到本文的讀者,也能為開源事業貢獻自己的一份力量。雖然說,此類代碼到處都有,不足為奇,但這個代碼在我改進之后,還是具有一些優點:
l 命令行執行 改進前的程序只能單獨執行,根據提示輸入參數和要轉換的目錄或文件;改進后的程序可集成到編輯器,集成開發環境(IDE)中。下文將會介紹如何集成到source insight中。
l 智能識別編碼方式 原來的程序不能識別編碼方式。如果轉換時選擇了一個非UTF-8編碼的文件,轉換后就成了亂碼;改進后的程序能智能識別編碼方式,無論是UTF-8文件是BOM格式還是非BOM格式,都能識別。對於純ASCII碼的文件,也能識別。
l 支持批處理 改進前的程序有bug,對目錄支持不完善;改進后的程序能很好的支持批處理。
目前,這個程序只針對源代碼文件編寫,支持后綴名為 .c .cpp .cxx .h .xml .java .txt等文件。如確實有需要,今后將支持更多類型的文件編碼格式轉換。
如何集成到 source insight?
下面,先介紹如何集成到 source insight里。本人使用的漢化版,如英文版請對照執行。
文件轉換命令 該命令能將當前打開的文件進行編碼轉換。很簡單,步驟如下:
在source insight里,選擇 “選項”—“自定義命令”,彈出對話框后,點擊“添加”,輸入新命令名 CodeConvert File 。確定后,點擊“瀏覽”,選擇我們的codeConvert.exe程序路徑。在輸入框里加上參數” –u2g %f” (注意空格,雙引號不要)。
這樣,這個文件轉換命令就添加成功。打開某個文件,按照上面步驟,選擇該自定義命令點擊“運行”,即可進行轉換。
目錄轉換命令 該命令能將當前打開的文件所在的文件夾進行編碼轉換。步驟同上,只是在輸入框里的參數改為” –u2g %d” (注意空格,雙引號不要)。
怎么樣?在source insight里點幾下,就能轉換了。混沌世界一下子清晰了。
感謝前輩無私分享,本人對以上源碼做了裁剪和重寫,只保留了三個文件(核心的轉換類),做了部分去Windows化(主要是LPSTR stdafx.h 之類的東東,並將項目改成了DEVC++項目 ),去掉了整個目錄的轉換 功能 ,修改成了適合自己使用的主要處理單文件轉化(-utg %f)和恢復(-g2u %f)的版本,我相信這也是大多數人需要的,因時間有限,可能還有紕漏之處。
附件提供DEVC++的項目文件及源碼
原文及原始碼請參考Source Insight完美轉換UTF-8 到 GB2312