Una forma más elegante de decodificar \ Unicode en un flujo de entrada

Estoy analizando un flujo de entrada que viene de Facebook. Estoy usando algo como

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8")); 

Y entonces in.readLine para leer realmente de la corriente.

El flujo parece tener caracteres Unicode ya codificados en ASCII, por lo que veo cosas como \ u00e4 (con \ u en realidad dos caracteres ASCII discretos). En este momento, estoy pescando "\ u" y decodificando los dos bytes hexadecimales siguientes, los convierto en un char y reemplazo la cadena con ellos, lo cual es obviamente la peor manera de hacerlo.

Estoy seguro de que hay una manera genial de usar una función nativa para decodificar los caracteres especiales a medida que se está leyendo el flujo (esperaba que se pudiera hacer en la capa InputStreamReader). ¿Pero cómo?

El formato de datos es JSON, que no mencioné (y que Thanatos ya asumió). El uso del analizador JSON de Android decodificará automáticamente los caracteres correctamente. Parsing JSON usted es obviamente una idea tonta en varios niveles.

Si ves ' \u00e4 ' con ' \ ' y ' u ' separados, entonces el ' 0 ', ' 0 ', ' e ' y ' 4 ' probablemente componen los 4 dígitos hexadecimales de un byte de 2 bit) Unicode. La notación se basa en C99; la alternativa es ' \U00XXYYZZ ' donde hay 8 dígitos hexadecimales que representan un carácter UTF-32 de 32 bits (pero, debido a que Unicode es un conjunto de códigos de 21 bits, los primeros 2 de los 8 dígitos son siempre 0 y el siguiente es a menudo (generalmente) 0 también).

Sin embargo, eso no responde a su pregunta sobre cuál es la forma correcta de Android para leer los datos, y tiene razón de que probablemente existe uno.

  • El carácter Unicode ("\ u232B") no se muestra en el botón
  • ¿Utilizar un carácter unicode en un archivo .java?
  • Unicode en Android
  • ¿Faltan codecs de Unicode en kivy / Python en Android?
  • Cómo convertir una cadena en unicode en android
  • ¿Cómo puedo mostrar símbolos fonéticos (IPA) en Android
  • ¿Cómo usar unicode en los recursos de Android?
  • Android TextView no muestra Grabación de sonido Copyright símbolo "℗"
  • Enviar un mensaje SMS (UTF-16) con un carácter desconocido reemplazado por un "carácter de reemplazo" en Android
  • Opción para ver el texto en diferentes idiomas en android?
  • Detectar si un carácter unicode es compatible?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.