为什么我需要在java源文件中转义unicode?

Den*_*ret 12 java unicode eclipse-rcp unicode-escapes

请注意,我不是在问为什么,而是为什么.我不知道这是否是RCP特定的问题,或者它是否是Java固有的东西.

我的java源文件以UTF-8编码.

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

    new Language("fr", "Français"),
    new Language("zh", "??")
Run Code Online (Sandbox Code Playgroud)

当我在Eclipse中使用字符串作为Eclipse应用程序启动它时,它正如我所期望的那样工作:

在此输入图像描述

但是,当我启动由"Eclipse Product Export Wizard"构建的.exe时失败:

在此输入图像描述

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

    new Language("fr", "Fran\u00e7ais"), // Français
    new Language("zh", "\u4e2d\u6587") // ??
Run Code Online (Sandbox Code Playgroud)

这样做没有问题(我的所有其他字符串都在属性文件中,只有语言名称是硬编码的)但我想了解.

我认为编译器在构建字节码时必须转换java文字字符串.那么为什么unicode逃逸是必要的呢?在java源文件中使用高范围unicode字符是错误的吗?编译中的那些字符究竟发生了什么,以及与转义字符的处理有何不同?该问题是否与RCP缓存有关?

Mat*_*all 10

Eclipse Product Export Wizard似乎没有将您的文件解释为UTF-8.也许你需要运行Eclipse的JVM,编码设置为UTF-8(-Dfile.encoding=UTF8in eclipse.ini)?

(在OPs请求下Copypasta)