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