java - utf8 - standardcharsets utf 8




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

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+, 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.


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.



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




java