standardcharsets - set utf8 java
¿Dónde obtener la cadena literal "UTF-8" en Java? (10)
Estoy tratando de usar una constante en lugar de una cadena literal en este fragmento de código:
new InputStreamReader(new FileInputStream(file), "UTF-8")
"UTF-8"
aparece en el código con bastante frecuencia, y sería mejor referirse a alguna variable static final
. ¿Sabe dónde puedo encontrar esa variable en JDK?
Por cierto, pensándolo bien, tales constantes son de mal diseño: los literales estáticos públicos ... no son una solución para la duplicación de datos
Ahora uso la constante org.apache.commons.lang3.CharEncoding.UTF_8
de commons-lang .
Definiciones constantes para el estándar. Se garantiza que estos conjuntos de caracteres estarán disponibles en cada implementación de la plataforma Java. desde 1.7
package java.nio.charset;
Charset utf8 = StandardCharsets.UTF_8;
En Java 1.7+
No use la cadena "UTF-8", en su lugar use el parámetro de tipo Charset
:
import java.nio.charset.StandardCharsets
...
new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
En Java 1.7+, java.nio.charset.StandardCharsets define constantes para Charset
incluyendo UTF_8
.
import java.nio.charset.StandardCharsets;
...
StandardCharsets.UTF_8.name();
Para Android: minSdk 19
En caso de que esta página aparezca en la búsqueda web de alguien, a partir de Java 1.7 ahora puede usar java.nio.charset.StandardCharsets para obtener acceso a definiciones constantes de conjuntos de caracteres estándar.
Esta constante está disponible (entre otras como: UTF-16
, US-ASCII
, etc.) en la clase org.apache.commons.codec.CharEncoding
también.
La biblioteca de Google Guava (que recomiendo encarecidamente de todos modos, si está trabajando en Java) tiene una clase Charsets
con campos estáticos como Charsets.UTF_8
, Charsets.UTF_16
, etc.
Desde Java 7, debes usar java.nio.charset.StandardCharsets
lugar de constantes comparables.
Tenga en cuenta que estas constantes no son cadenas, son instancias reales de Charset
. Todas las API estándar que toman un nombre de conjunto de caracteres también tienen una sobrecarga que toma un objeto Charset
que debe usar en su lugar.
No hay ninguno (al menos en la biblioteca estándar de Java). Los conjuntos de caracteres varían de una plataforma a otra, por lo que no hay una lista estándar de ellos en Java.
Sin embargo, hay algunas bibliotecas de terceros que contienen estas constantes. Uno de estos es Guava (bibliotecas centrales de Google): http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Charsets.html
Puede utilizar la API Charset.defaultCharset()
o la propiedad file.encoding
.
Pero si quieres tu propia constante, necesitarás definirla tú mismo.
Si está utilizando OkHttp para Java / Android, puede usar la siguiente constante:
import com.squareup.okhttp.internal.Util;
Util.UTF_8; // Charset
Util.UTF_8.name(); // String