¿Dónde obtener la cadena literal "UTF-8" en Java?



standardcharsets utf 8 (8)

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


Esta constante está disponible (entre otras como: UTF-16 , US-ASCII , etc.) en la clase org.apache.commons.codec.CharEncoding también.


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.


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

Puede utilizar la API Charset.defaultCharset() o la propiedad file.encoding .

Pero si quieres tu propia constante, necesitarás definirla tú mismo.



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.


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);

Ahora uso la constante org.apache.commons.lang3.CharEncoding.UTF_8 de commons-lang .





java