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?
{In,Out}putStream{Read,Writ}ers
que lo hagan por ellas. ¿Me pregunto porque?Respuestas:
String
Los objetos en Java usan la codificación UTF-16 que no se puede modificar.Lo único que puede tener una codificación diferente es a
byte[]
. Entonces, si necesita datos UTF-8, entonces necesita abyte[]
. Si tiene unString
archivo que contiene datos inesperados, entonces el problema está en algún lugar anterior que convirtió incorrectamente algunos datos binarios a aString
(es decir, estaba usando la codificación incorrecta).fuente
byte[]
, no tiene sentidoString
(a menos que la codificación sea UTF-16, en cuyo caso tiene sentido pero sigue siendo información innecesaria).String objects in Java use the UTF-16 encoding that can't be modified.
¿Tiene una fuente oficial para esta cita?¿Qué tal usar
fuente
myString.getBytes(Charsets.UTF_8)
y bytes -> string:new String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Disponible en Java 1.7+.En Java7 puedes usar:
Esto tiene la ventaja sobre
getBytes(String)
que no declarathrows UnsupportedEncodingException
.Si está utilizando una versión de Java anterior, puede declarar las constantes del juego de caracteres usted mismo:
fuente
String value = new String(myString);
.Usar en
byte[] ptext = String.getBytes("UTF-8");
lugar degetBytes()
.getBytes()
utiliza la llamada "codificación predeterminada", que puede no ser UTF-8.fuente
Una cadena de Java siempre se codifica internamente en UTF-16, pero realmente debería pensarlo así: una codificación es una forma de traducir entre cadenas y bytes.
Entonces, si tiene un problema de codificación, para 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.
fuente
Puedes intentarlo de esta manera.
fuente
En un momento pasé por este problema y logré resolverlo de la siguiente manera
primero necesito importar
Luego tuve que declarar una constante para usar
UTF-8
yISO-8859-1
Entonces podría usarlo de la siguiente manera:
fuente
y, si desea leer desde un archivo de texto con "ISO-8859-1" codificado:
fuente
He usado el siguiente código para codificar el carácter especial especificando el formato de codificación.
fuente
Una guía rápida paso a paso sobre cómo configurar la codificación predeterminada NetBeans UTF-8. En consecuencia, NetBeans creará todos los archivos nuevos en codificación UTF-8.
Guía paso a paso de codificación predeterminada de NetBeans UTF-8
Vaya a la carpeta etc. en el directorio de instalación de NetBeans
Editar el archivo netbeans.conf
Encuentra la línea netbeans_default_options
Agregue -J-Dfile.encoding = UTF-8 entre comillas dentro de esa línea
(ejemplo:
netbeans_default_options="-J-Dfile.encoding=UTF-8"
)Reiniciar NetBeans
Configura la codificación predeterminada de NetBeans UTF-8.
Sus netbeans_default_options pueden contener parámetros adicionales dentro de las comillas. En tal caso, agregue -J-Dfile.encoding = UTF-8 al final de la cadena. Separarlo con espacio de otros parámetros.
Ejemplo:
aquí hay un enlace para más detalles
fuente
Esto resolvió mi problema
fuente