que number non hace characters accented java unicode utf-8

number - Cómo convertir UTF-8 a Unicode en Java?



unicode number of characters (3)

Entonces mi pregunta es, si tengo una matriz de bytes con valor (0xF0, 0x9F, 0x98, 0x81), ¿cómo puedo convertirlo en un valor Unicode?

Simplemente llame al constructor String especificando los datos y la codificación:

String text = new String(bytes, "UTF-8");

Puede especificar un Charset lugar del nombre de la codificación. Me gusta la clase Charsets simple de Charsets , que le permite escribir:

String text = new String(bytes, Charsets.UTF_8);

O para Java 7, use StandardCharsets sin necesidad de utilizar Guava:

String text = new String(bytes, StandardCharsets.UTF_8);

Por ejemplo, en el conjunto de Emoji Char, U+1F601 es el valor unicode de "GRACEANDO LA CARA CON OJOS SONRIENTES", y /xF0/x9F/x98/x81 es el valor de bytes UTF-8 para este personaje.

/xE2/x9D/xA4 es para corazón negro pesado, y el Unicode es U+2764 .

Entonces mi pregunta es, si tengo una matriz de bytes con valor (0xF0, 0x9F, 0x98, 0x81, 0xE2, 0x9D, 0xA4) , ¿cómo puedo convertirlo en un valor Unicode?

Para el resultado anterior, lo que quiero es una matriz de cadenas con el valor "1F601" y "2764" .

Sé que puedo escribir un método complejo para hacer este trabajo, pero espero que ya haya una biblioteca para hacer este trabajo.


Simplemente use String clase String :

byte[] bytesArray = new byte[10]; // array of bytes (0xF0, 0x9F, 0x98, 0x81) String string = new String(bytesArray, Charset.forName("UTF-8")); // covert byteArray System.out.println(string); // Test result


Aquí hay un ejemplo usando InputStreamReader:

InputStream inputStream = new FileInputStream("utf-8-text.txt"); Reader reader = new InputStreamReader(inputStream, Charset.forName("UTF-8")); int data = reader.read(); while(data != -1){ char theChar = (char) data; data = reader.read(); } reader.close();

Ref: Ejemplo de Java I18N