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