Javaに何らかの方法があるので、Unicodeと同等の文字を取得できますか?.
メソッドgetUnicode(char c)
を想定します。 getUnicode('÷')
を呼び出すと、\u00f7
が返されます。
ここで1つのライナーを使用して、任意のJava文字に対してそれを行うことができます。
System.out.println( "\\u" + Integer.toHexString('÷' | 0x10000).substring(1) );
ただし、Unicode 3.0までのUnicode文字に対してのみ機能します。そのため、Javaの任意の文字に対して実行できると正確に判断しました。
JavaはUnicode 3.1が登場する前に設計されたため、JavaのcharプリミティブはUnicode 3.1以上を表現するには不十分です。「1つのUnicode文字から1つのJava char使用されている)。
したがって、ここで要件を確認する必要があります。Java charまたは可能なUnicode文字をサポートする必要がありますか?
Java 5)がある場合は、char c = ...; String s = String.format ("\\u%04x", (int)c);
を使用します
ソースがUnicode文字(char
)ではなくStringである場合、charAt(index)
を使用して位置index
のUnicode文字を取得する必要があります。
codePointAt(index)
を使用しないでください。4ビットの16進数だけでは表現できない24ビット値(完全なUnicode)が返されます(6が必要です)。 説明についてはドキュメント を参照してください。
[編集]明確にするために:この答えはUnicodeを使用しませんが、charは16ビットでUnicodeは24ビットなので、JavaはUnicode文字(サロゲートペア))を表す方法を使用します。 「char
を4桁の16進数に変換するにはどうすればよいですか」というのは、(本当に)Unicodeに関するものではないからです。
private static String toUnicode(char ch) {
return String.format("\\u%04x", (int) ch);
}
char c = 'a';
String a = Integer.toHexString(c); // gives you---> a = "61"
Java "dec"値または(HTML-Code)を使用するようにプログラムを記述すると、charとintの間でデータ型をキャストできるため、Unicodeを使用することにこだわりますか?
char a = 98;
char b = 'b';
char c = (char) (b+0002);
System.out.println(a);
System.out.println((int)b);
System.out.println((int)c);
System.out.println(c);
この出力を与える
b
98
100
d
この素敵なコードをウェブで見つけました。
import Java.io.BufferedReader;
import Java.io.IOException;
import Java.io.InputStreamReader;
public class Unicode {
public static void main(String[] args) {
System.out.println("Use CTRL+C to quite to program.");
// Create the reader for reading in the text typed in the console.
InputStreamReader inputStreamReader = new InputStreamReader(System.in);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
try {
String line = null;
while ((line = bufferedReader.readLine()).length() > 0) {
for (int index = 0; index < line.length(); index++) {
// Convert the integer to a hexadecimal code.
String hexCode = Integer.toHexString(line.codePointAt(index)).toUpperCase();
// but the it must be a four number value.
String hexCodeWithAllLeadingZeros = "0000" + hexCode;
String hexCodeWithLeadingZeros = hexCodeWithAllLeadingZeros.substring(hexCodeWithAllLeadingZeros.length()-4);
System.out.println("\\u" + hexCodeWithLeadingZeros);
}
}
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
最初に、charのハイサイドを取得します。その後、ローサイドを取得します。 HexString内のすべてのものを変換し、プレフィックスを付けます。
int hs = (int) c >> 8;
int ls = hs & 0x000F;
String highSide = Integer.toHexString(hs);
String lowSide = Integer.toHexString(ls);
lowSide = Integer.toHexString(hs & 0x00F0);
String hexa = Integer.toHexString( (int) c );
System.out.println(c+" = "+"\\u"+highSide+lowSide+hexa);