2010-01-18 135 views
2

我正在爲自定義語言編寫Eclipse文本編輯器插件。Eclipse文本編輯器插件和自定義編碼

問題是,解析這些文件的工具不理解unicode,但編輯器應顯示unicode數學符號。

已經有一個Netbeans插件通過將unicode字符轉換爲多個ANSI字符來處理這個問題。例如。寫入磁盤時,U + 27F6(向右長箭頭)被編碼爲-->,反之亦然。

我正在尋找現在的日子,我無法找到一個API或一些可以讓我在Eclipse平臺上乾淨地做到這一點的東西。

有誰知道如何做到這一點?

+0

剛剛完成我的答案,建議Java實現。 – VonC 2010-01-25 08:33:51

+0

我不需要native2ascii的Java實現。我完全知道如何實現編碼過程。這是*不是問題。 問題是,顯然沒有簡單的方法將這種文檔轉換嵌入到Eclipse的保存和加載過程中。 – 2010-01-25 15:31:59

回答

1

我不確定你的意思是「編碼爲-->」。
不是實際的ASCII字符,我猜想,因爲沒有辦法將Unicode轉換爲ASCII碼錶示,因爲全部是 Unicode組合。
對於arrows孤獨,the work for defining ASCII-expressible tokens for arrows and arrow-like是......相當大!

我知道native2ascii其做轉換(也爲Netbeans的插件)

Native2Ascii for NetBeans

(不要與native2ascii.exe bundled with the JDK混合)

對於Eclipse,你可以使用一個ant task(你可以從你的Java程序中調用),以及哪個等價於:

<native2ascii encoding="EUCJIS" src="srcdir" dest="srcdir" 
    includes="**/*.eucjis" ext=".java"/> 

(其中,在這裏,轉換從EUCJIS編碼ASCII.eucjis結束目錄srcdir的所有文件,並重新命名他們.java結束。)


用戶也可以建立自己的ASCII <-> UTF轉換功能,如在本native2ascii Java project(不涉及用native2ascii ant任務或以上提到的native2ascii.exe)

提取物:

 private static StringBuffer native2Ascii(char charater) { 
       StringBuffer sb = new StringBuffer(); 
       if (charater > 255) { 
         sb.append("\\u"); 
         int lowByte = (charater >>> 8); 
         sb.append(int2HexString(lowByte)); 
         int highByte = (charater & 0xFF); 
         sb.append(int2HexString(highByte)); 
       } else { 
         sb.append(charater); 
       } 
       return sb; 
     } 

注(無關):爲PDE構建,您需要設置一個特殊的設置(javacDefaultEncoding)。見this thread

+0

unicode符號和它們的多字節ASCII表示之間有一個預定義的映射表。箭頭只是一個例子 我也不想使用集成的Eclipse構建系統。據我所知,native2ascii僅對Java源代碼有用。 但是非常感謝你的努力。 – 2010-01-24 01:37:44

0

設置字符集通過IFile.setCharset()的作品?

+0

我看着那個。如果我知道如何定義自己的字符集/編碼,這可能會有所幫助。 – 2010-01-21 06:51:36