12

请注意,我不是在问如何,而是在问为什么。而且我不知道这是否是特定于 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 缓存有关吗?

4

2 回答 2

10

Eclipse 产品导出向导似乎没有将您的文件解释为 UTF-8。也许您需要运行 Eclipse 的 JVM,并将编码设置为 UTF-8 ( -Dfile.encoding=UTF8in eclipse.ini)?

(应 OP 要求复制粘贴)

于 2012-06-27T13:26:10.690 回答
3

导出插件时,它会通过与 IDE 中的正常构建过程不同的过程进行编译。存在一个已知错误,即构建过程 (PDE.Bu​​ild) 会忽略 IDE 使用的文本编码。

通过在插件的 build.properties 文件中指定文本编码,可以使导出正常工作

javacDefaultEncoding.. =UTF-8
于 2013-07-06T10:50:14.250 回答