2010-01-18 99 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