u00f3 u00e9 java unicode

u00e9 - in java



Obtener el valor unicode de un personaje (7)

¿eres quisquilloso con el uso de Unicode porque con Java es más simple si escribes tu programa para usar el valor "dec" o (código HTML) entonces puedes simplemente crear tipos de datos entre char e int

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);

Da esta salida

b 98 100 d

¿Hay alguna forma en Java para que pueda obtener el equivalente en Unicode de cualquier personaje? p.ej

Supongamos que un método getUnicode(char c) . Una llamada getUnicode(''÷'') debería devolver /u00f7 .


Encontré este buen código en la web.

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(); } } }

Artículo original


Primero, obtengo el lado alto del char. Después, toma el lado bajo. Convierta todas las cosas en HexString y ponga el prefijo.

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);


Puede hacerlo para cualquier char de Java usando el trazador de líneas uno aquí:

System.out.println( "//u" + Integer.toHexString(''÷'' | 0x10000).substring(1) );

Pero solo va a funcionar para los caracteres Unicode hasta Unicode 3.0, por lo que precisé que podría hacerlo para cualquier char de Java.

Debido a que Java fue diseñado mucho antes de que llegara Unicode 3.1 y por lo tanto la primitiva de caracteres de Java no es adecuada para representar Unicode 3.1 y versiones posteriores: ya no hay una asignación de "un carácter Unicode a un char de Java" (en su lugar se usa un truco monstruoso).

Entonces, realmente debe verificar sus requisitos aquí: ¿necesita soportar Java Char o cualquier posible carácter Unicode?


Si tiene Java 5, use char c = ...; String s = String.format ("//u%04x", (int)c); char c = ...; String s = String.format ("//u%04x", (int)c);

Si su fuente no es un carácter Unicode ( char ) sino un String, debe usar charAt(index) para obtener el carácter Unicode en el index posición.

No use codePointAt(index) porque devolverá valores de 24 bits (Unicode completo) que no pueden representarse con solo 4 dígitos hexadecimales (necesita 6). Vea los documentos para una explicación .

[EDITAR] Para que quede claro: Esta respuesta no utiliza Unicode, pero el método que utiliza Java para representar los caracteres Unicode (es decir, pares de sustitución) ya que char es de 16 bits y Unicode es de 24 bits. La pregunta debería ser: "¿Cómo puedo convertir un char hexadecimal en un número hexadecimal de 4 dígitos?", Ya que no se trata (realmente) de Unicode.


char c = ''a''; String a = Integer.toHexString(c); // gives you---> a = "61"


private static String toUnicode(char ch) { return String.format("//u%04x", (int) ch); }