次のようなクラスファイルにUnicode文字を設定したいと思います。
TextView tv = ...;
tv.setText("·");
.javaファイルでUnicode文字を使用することに潜在的に問題があるものはありますか?
ありがとう
いいえ。Java 文字列は Unicode をサポートしているため、問題が発生することはありません。クラスがすべての Unicode 文字を処理することを確認する必要があるかもしれませんがTextView
(そうするべきです)、Java 自体が Unicode 文字を処理します。
また、ファイルが正しいエンコード設定で保存されていることを確認する必要があります。基本的にこれは、エディタが Java ファイルを UTF-8 エンコード Unicode として保存する必要があることを意味します。詳細については、この回答へのコメントを参照してください。
.java ファイルで Unicode 文字を使用すると何か問題がある可能性はありますか?
ご存知のように、JVM 内の文字列は Unicode として格納されます。そのため、問題はJava ソース ファイルで Unicode をどのように処理するかということです...
つまり、Unicode を使用しても問題ありません。アプローチ方法はいくつかあります...
デフォルトでは、javac
コンパイラはソース ファイルがプラットフォームのデフォルト エンコーディングであると想定します。-encoding
これは、次のフラグを使用してオーバーライドできます。
-encoding encoding
EUCJIS/SJIS/ISO8859-1/UTF8など、ソースファイルのエンコーディング名を設定します。が指定されていない場合-encoding
は、プラットフォームの既定のコンバーターが使用されます。
または、それが単一の文字の場合 (そのように見えます)、ソース ファイルをプラットフォームの既定のエンコーディングのままにし、Unicode エスケープ シーケンスを使用して文字を指定できます。
tv.setText("\u1234");
... '1234' は、必要な文字の Unicode 値です。
もう 1 つの方法は、最初にファイルを Unicode 互換のエンコーディング (UTF-8 など) で保存してから、 を使用native2ascii
してそのファイルをネイティブ エンコーディングに変換することです (範囲外の文字は対応する Unicode エスケープ シーケンスに変換されます)。
NAME
native2ascii
- ネイティブから ASCII へのコンバーターあらすじ
native2ascii [ options ] [ inputfile [outputfile]]
説明
Java コンパイラおよびその他の Java ツールは、Latin-1 または Unicode でエンコードされた (\udddd
表記法) 文字を含むファイルのみを処理できます。native2ascii は、他の文字エンコーディングを含むファイルを、Latin-1 または Unicode でエンコードされた文字を含むファイルに変換します。outputfile を省略すると、標準出力が出力に使用されます。また、inputfile を省略した場合、入力は標準入力を使用します。