我为什么要逃避java源文件的Unicode?(Why do I need to escape un

2019-09-18 15:14发布

请注意,我不是问怎么偏偏。 我不知道这是否是一个RCP具体问题,或者如果它是内在的对Java的东西。

我的java源文件为UTF-8。

如果我这样定义我的文字字符串:

    new Language("fr", "Français"),
    new Language("zh", "中文")

它的工作原理如我所料,当我从Eclipse中启动它作为Eclipse应用程序中使用的应用程序中的字符串:

但是,如果当我启动的“Eclipse的产品导出向导”建立的.EXE失败:

我使用的解决方案是逃避这样的字符:

    new Language("fr", "Fran\u00e7ais"), // Français
    new Language("zh", "\u4e2d\u6587") // 中文

有在做这个(我的所有其他字符串属性文件,只是名称是硬编码的语言),没有问题,但我想明白了。

我认为有编译器生成时对Java文本字符串转换字节码 。 那么,为什么是Unicode逃逸必要吗? 这是错误的使用java源文件使用高范围的Unicode字符? 到底会发生这些字符在编译和它是从的转义字符的处理不同是什么? 问题是否只与RCP缓存?

Answer 1:

看来,在Eclipse产品导出向导不解释你的文件为UTF-8。 也许你需要使用(设置为UTF-8编码运行Eclipse的JVM -Dfile.encoding=UTF8eclipse.ini )?

(在有机磷请求Copypasta'd)



Answer 2:

当导出插件,它就会通过在IDE中正常的构建过程分开的过程编译。 有一种已知的错误 ,该构建过程(PDE.Bu​​ild)无视由IDE所用的文字编码。

出口可以使在你的插件的build.properties文件中指定的文本编码正常工作

javacDefaultEncoding.. =UTF-8


文章来源: Why do I need to escape unicode in java source files?