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.
- Diferenciación de los lenguajes CJK (chino, japonés y coreano) en Android
- Cómo mostrar la fuente telugu en el emulador correctamente
- Escriba el número dentro de ayah end unicode símbolo árabe
- Soporte unicode en android ndk
- Android: ¿Cómo usar los glifos japoneses de Unihan?
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?
- Lectura de texto unicode de los activos
- Letras cirílicas que no se muestran en PDF generadas con iText en Android
- Cómo establecer emoji por unicode en android textview
- Codificación de caracteres de cadena con Android y Oracle Java
- Imprimir unicode personaje Android TextView
- Soporte de teclado Emoji para EditField en android
- ¿Cómo puedo contribuir al proyecto de Android en el apoyo / representación del idioma que no sea el inglés?
- Carácter de unicode de entrada de shell de adb
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.
- Versiones pagadas y gratuitas de la aplicación para Android
- Android Studio + Gradle para crear diferentes configuraciones