現在、使用してアプリケーション名を設定しようとしています
net.rim.blackberry.api.homescreen.HomeScreen.setName("これはある");
しかし、それは例外をスローします: IllegalArgumentException
.
誰でも解決策を提供できますか?
Blackberry JDE 5.0 を使用しています。
現在、使用してアプリケーション名を設定しようとしています
net.rim.blackberry.api.homescreen.HomeScreen.setName("これはある");
しかし、それは例外をスローします: IllegalArgumentException
.
誰でも解決策を提供できますか?
Blackberry JDE 5.0 を使用しています。
これはおそらく文字列のエンコードの問題です。試す
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 です。
あなたが直面している問題は、ソース コードで表された文字列を同じ文字でアプリケーションに取り込む方法です。ラテン文字の場合、文字を引用符で囲み、"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\u308B");