目前我正在尝试使用
设置应用程序名称net.rim.blackberry.api.homescreen.HomeScreen.setName("これはある");
但它抛出异常:IllegalArgumentException
。
有人能提供解决方案吗?
我正在使用Blackberry JDE 5.0。
答案 0 :(得分:3)
这可能是字符串编码问题。尝试
new String(new String("これはある").getBytes("UTF-16BE"), "UTF-16BE");
它不漂亮,但我认为这样可行。
以下是Blackberry字符串规范的链接:http://www.blackberry.com/developers/docs/5.0.0api/java/lang/String.html
默认情况下,它是ISO-8859-1,不包括日文字符。
答案 1 :(得分:1)
您面临的问题是如何将源代码中表示的字符串添加到具有相同字符的应用程序中。对于拉丁字符,这非常简单,因为我们可以将字符放在引号中,并获得一个字符串,如“Hello world”
当你去非拉丁语时,就像日语一样,它变得更难。您仍然可以直接在源代码中编写日语,但是您需要确保编辑器和编译器对编码达成一致,以便可以正确解释字符。 Java-SE编译器接受一个参数“-encoding”,它允许您指定java源文件的编码 不幸的是,BlackBerry编译器rapc没有提供指定编码的选项,即使它正在调用javac本身。所以rapc使用平台默认值,在Linux和OSX上是utf-8,在Windows上是iso-8859-1。
解决这个问题的方法是使用Java语言的一个特性来解析字符串 - unicode转义。通过在字符串中输入六个字符序列“\ u3053”,java编译器将该数字解析为十六进制并使用相应的unicode代码点,解决源文件编码问题。 因此,“Hello world”和“\ u0048 \ u0065 \ u006c \ u006c \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006c \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006 \ u006
因此,斯韦特林在评论中的回答是正确的方法:
net.rim.blackberry.api.homescreen.HomeScreen.setName("\u3053\u308C\u306F\u3042\u308B");