3

現在、使用してアプリケーション名を設定しようとしています

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

しかし、それは例外をスローします: IllegalArgumentException.

誰でも解決策を提供できますか?

Blackberry JDE 5.0 を使用しています。

4

2 に答える 2

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 です。

于 2012-06-12T14:32:56.100 に答える
1

あなたが直面している問題は、ソース コードで表された文字列を同じ文字でアプリケーションに取り込む方法です。ラテン文字の場合、文字を引用符で囲み、"Hello world" のような文字列を取得できるため、これは非常に簡単です。

日本語のように非ラテン語に行くと難しくなります。ソース コードに直接日本語を記述することもできますが、文字が正しく解釈されるように、エディタとコンパイラがエンコーディングに同意していることを確認する必要があります。Java-SE コンパイラは、Java ソース ファイルのエンコーディングを指定できる引数「-encoding」を取ります。
残念ながら、BlackBerry コンパイラである rapc は、javac 自体を呼び出しているにもかかわらず、エンコーディングを指定するオプションを提供していません。そのため、rapc はプラットフォームのデフォルトを使用します。Linux と OSX では utf-8、Windows では iso-8859-1 です。

この問題を回避するには、文字列の解析に Java 言語の機能である Unicode エスケープを使用します。文字列に 6 文字のシーケンス「\u3053」を入力すると、Java コンパイラはその数値を 16 進数として解析し、対応する 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\u‌​308B");
于 2012-06-13T16:55:23.000 に答える