studio scanner how example ejemplo connectedthread app java utf-8

java - scanner - listview bluetooth android example



Encode String to UTF-8 (10)

¿Qué hay de usar

ByteBuffer byteBuffer = Charset.forName("UTF-8").encode(myString)

Tengo una Cadena con un carácter "ñ" y tengo algunos problemas con ella. Necesito codificar esta cadena a la codificación UTF-8. Lo he intentado de esta manera, pero no funciona:

byte ptext[] = myString.getBytes(); String value = new String(ptext, "UTF-8");

¿Cómo codifico esa cadena a utf-8?


En Java7 puedes usar:

import static java.nio.charset.StandardCharsets.*; byte[] ptext = myString.getBytes(ISO_8859_1); String value = new String(ptext, UTF_8);

Esto tiene la ventaja sobre getBytes(String) que no declara throws UnsupportedEncodingException .

Si está utilizando una versión anterior de Java, puede declarar las constantes de juego de caracteres usted mismo:

import java.nio.charset.Charset; public class StandardCharsets { public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); public static final Charset UTF_8 = Charset.forName("UTF-8"); //.... }


En un momento pasé por este problema y logré resolverlo de la siguiente manera

primero necesito importar

import java.nio.charset.Charset;

Luego tuve que declarar una constante para usar UTF-8 e ISO-8859-1

private static final Charset UTF_8 = Charset.forName("UTF-8"); private static final Charset ISO = Charset.forName("ISO-8859-1");

Entonces podría usarlo de la siguiente manera:

String textwithaccent="Thís ís a text with accent"; String textwithletter="Ñandú"; text1 = new String(textwithaccent.getBytes(ISO), UTF_8); text2 = new String(textwithletter.getBytes(ISO),UTF_8);


Esto resolvió mi problema

String inputText = "some text with escaped chars" InputStream is = new ByteArrayInputStream(inputText.getBytes("UTF-8"));


Puedes intentarlo de esta manera.

byte ptext[] = myString.getBytes("ISO-8859-1"); String value = new String(ptext, "UTF-8");


Una cadena de Java siempre está codificada internamente en UTF-16, pero debería pensarlo de la siguiente manera: una codificación es una forma de traducir entre cadenas y bytes.

Entonces, si tiene un problema de codificación, cuando tenga String, es demasiado tarde para solucionarlo. Debe arreglar el lugar donde crea esa cadena desde un archivo, base de datos o conexión de red.


Use byte[] ptext = String.getBytes("UTF-8"); en lugar de getBytes() . getBytes() usa la llamada "codificación predeterminada", que puede no ser UTF-8.


Utilicé el código siguiente para codificar el carácter especial especificando el formato de codificación.

String text = "This is an example é"; byte[] byteText = text.getBytes(Charset.forName("UTF-8")); //To get original string from byte. String originalString= new String(byteText , "UTF-8");


String objetos String en Java usan la codificación UTF-16 que no se puede modificar.

Lo único que puede tener una codificación diferente es un byte[] . Entonces, si necesita datos UTF-8, necesita un byte[] . Si tiene una String que contiene datos inesperados, entonces el problema está en algún lugar anterior que incorrectamente convirtió algunos datos binarios en una String (es decir, estaba usando una codificación incorrecta).


String value = new String(myString.getBytes("UTF-8"));

y, si desea leer un archivo de texto con la codificación "ISO-8859-1":

String line; String f = "C://MyPath//MyFile.txt"; try { BufferedReader br = Files.newBufferedReader(Paths.get(f), Charset.forName("ISO-8859-1")); while ((line = br.readLine()) != null) { System.out.println(new String(line.getBytes("UTF-8"))); } } catch (IOException ex) { //... }