Desplome de Android debido a la operación de byte simple a String
¿Por qué el siguiente código hace que mi aplicación Android se bloquee?
new String("é".getBytes(StandardCharsets.UTF_8), "UTF8")
o simplemente
new String("é".getBytes())
¿Como hacer esto?
Algunas informaciones:
- "É" es un byte (195 169) es (U + 00E9) (Encontrado aquí: http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec )
- Byte en java siempre se firma, por lo que (195 169) es (-61 -87) (Info: Convertir byte sin firmar a byte firmado )
- Estoy usando Android 6.0.1 CM 13.0-20160813 NIGHTLY en mi OnePlus One. Se estrelló al instante. Incluso si lo ingreso en el depurador de Android Studio.
- No funciona si utilizo "StandardCharsets.UTF_8"
Error:
08-18 20: 30: 04.877 18914-18924 / com.nextwebart.senego W / google-breakpad: ### ### ### ### ### ### ### ### ### ### 08-18 20: 30: 04.877 18914-18924 / com.nextwebart.senego W / google-breakpad: huella digital de construcción de cromo: 08-18 20: 30: 04.877 18914-18924 /com.nextwebart.senego W / google-breakpad: 4.2.8 08-18 20: 30: 04.877 18914-18924 / com.nextwebart.senego W / google-breakpad: 70 08-18 20: 30: 04.877 18914-18924 /com.nextwebart.senego W / google-breakpad: ### ### ### ### ### ### ### ### ### ### # 08-18 20: 30: 04.877 18914-18924 / com.nextwebart.senego A / libc: Señal fatal 11 (SIGSEGV), código 1, fallo addr 0x5 en tid 18924 (JDWP)
Se ha encontrado una pregunta relacionada aquí: Codificación de caracteres de cadenas de Java – para locales de idioma francés y holandés
——- EDIT:
Sucede sólo en mi depurador de Android Studio! Así que cuando uso esto como reloj o "evaluar expresión". Pero cuando hago esto en el código y luego Log.d (…) funciona bien! Android Studio 2.1.3
He creado un problema de Android Studio para eso: https://code.google.com/p/android/issues/detail?id=220366
new String("é".getBytes())
Funciona perfectamente para mí. Lo he probado con android min API 14. Por favor, compruebe, puede ocurrir para cualquier otro problema.