¿Dónde obtener el literal de cadena "UTF-8" en Java?
Estoy intentando utilizar 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 mucho mejor hacer referencia a alguna static final
variable. ¿Sabes dónde puedo encontrar dicha variable en JDK?
Por cierto, pensándolo bien, esas constantes son un mal diseño: los literales estáticos públicos... no son una solución para la duplicación de datos
En Java 1.7+, java.nio.charset.StandardCharsets define constantes para Charset
incluir UTF_8
.
import java.nio.charset.StandardCharsets;
...
StandardCharsets.UTF_8.name();
Para Android: minSdk 19
Ahora uso org.apache.commons.lang3.CharEncoding.UTF_8
la constante de commons-lang .
La biblioteca Google Guava (que recomiendo encarecidamente de todos modos, si estás trabajando en Java) tiene una Charsets
clase con campos estáticos como Charsets.UTF_8
, Charsets.UTF_16
etc.
Desde Java 7, debería utilizar java.nio.charset.StandardCharsets
constantes comparables.
Tenga en cuenta que estas constantes no son cadenas, son Charset
instancias reales. Todas las API estándar que toman un nombre de juego de caracteres también tienen una sobrecarga que toma un Charset
objeto que debes usar en su lugar.
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 también está disponible (entre otras como: UTF-16
, US-ASCII
, etc.) en la clase .org.apache.commons.codec.CharEncoding