目前,我正在尝试使用以下命令设置应用程序名称
net.rim.blackberry.api.homescreen.HomeScreen.setName("これはある");但是它抛出了异常:IllegalArgumentException。
有人能提供解决方案吗?
我使用的是Blackberry JDE 5.0。
发布于 2012-06-12 22:32:56
这可能是一个字符串编码问题。试一试
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-14 00:55:23
您面临的问题是如何将源代码中表示的字符串放入具有相同字符的应用程序中。对于拉丁字符,这非常简单,因为我们只需将字符放在引号中,然后得到一个字符串,如"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\u006f\u0020\u0057\u006f\u0072\u006c\u0064”将导致相同的字符串出现在您的类文件中。
正因为如此,Svetlin在评论中的答案是这里的正确方法:
net.rim.blackberry.api.homescreen.HomeScreen.setName("\u3053\u308C\u306F\u3042\u308B");https://stackoverflow.com/questions/10998467
复制相似问题