3

目前我正在尝试使用设置应用程序名称

net.rim.blackberry.api.homescreen.HomeScreen.setName("これはある");

但它抛出异常:IllegalArgumentException

任何人都可以提供解决方案吗?

我正在使用黑莓 JDE 5.0。

4

2 回答 2

3

这可能是字符串编码问题。尝试

new String(new String("これはある").getBytes("UTF-16BE"), "UTF-16BE");

这不漂亮,但我认为这会奏效。

这是黑莓字符串规范的链接:http: //www.blackberry.com/developers/docs/5.0.0api/java/lang/String.html

默认情况下,它是 ISO-8859-1,不包括日文字符。

于 2012-06-12T14:32:56.100 回答
1

您面临的问题是如何将源代码中表示的字符串以相同的字符放入您的应用程序中。对于拉丁字符,这非常简单,因为我们可以将字符放在引号中,然后得到一个字符串,例如“Hello world”

当你去非拉丁语,比如日语,它会变得更难。您仍然可以直接在源代码中编写日语,但您需要确保您的编辑器和编译器在编码上达成一致,以便正确解释字符。Java-SE 编译器接受一个参数“-encoding”,它允许您指定 Java 源文件的编码。
不幸的是,黑莓编译器 rapc 不提供指定编码的选项,即使它调用 javac 本身也是如此。因此 rapc 使用平台默认值,在 Linux 和 OSX 上为 utf-8,在 Windows 上为 iso-8859-1。

解决这个问题的方法是使用 Java 语言的一个特性来解析字符串——unicode 转义。通过在字符串中输入六个字符序列“\u3053”,java 编译器会将该数字解析为十六进制并使用相应的 unicode 代码点,从而解决源文件编码问题。所以 "Hello world" 和 "\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064" 将导致相同的字符串出现在你的类文件中。

正因为如此,斯维特林从评论中的回答是正确的方法:

net.rim.blackberry.api.homescreen.HomeScreen.setName("\u3053\u308C\u306F\u3042\u‌​308B");
于 2012-06-13T16:55:23.000 回答