web-dev-qa-db-ja.com

文字のUnicode値を取得します

Javaに何らかの方法があるので、Unicodeと同等の文字を取得できますか?.

メソッドgetUnicode(char c)を想定します。 getUnicode('÷')を呼び出すと、\u00f7が返されます。

66
Saurabh

ここで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文字をサポートする必要がありますか?

60
SyntaxT3rr0r

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に関するものではないからです。

33
Aaron Digulla
private static String toUnicode(char ch) {
    return String.format("\\u%04x", (int) ch);
}
12
Yogesh Dubey
char c = 'a';
String a = Integer.toHexString(c); // gives you---> a = "61"
6
Deepak Sharma

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
0
Jordan Doerksen

この素敵なコードをウェブで見つけました。

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);
0
Josiel Novaes