Где получить строковый литерал «UTF-8» в Java?

Я пытаюсь использовать константу вместо строкового литерала в этом fragmentе кода:

new InputStreamReader(new FileInputStream(file), "UTF-8") 

"UTF-8" появляется в коде довольно часто, и было бы гораздо лучше ссылаться на некоторую static final переменную. Вы знаете, где я могу найти такую ​​переменную в JDK?

BTW, на второй взгляд, такие константы плохой дизайн: публичные статические литералы … не являются решением для дублирования данных

В Java 1.7+ java.nio.charset.StandardCharsets определяет константы для Charset включая UTF_8 .

 import java.nio.charset.StandardCharsets ... StandardCharsets.UTF_8.name(); 

Для Android: minSdk 19

Теперь я использую константу org.apache.commons.lang3.CharEncoding.UTF_8 из commons-lang .

Библиотека Google Guava (которую я настоятельно рекомендую в любом случае, если вы работаете в Java) имеет class Charsets со статическими полями, такими как Charsets.UTF_8 , Charsets.UTF_16 и т. Д.

Начиная с Java 7 вы должны просто использовать java.nio.charset.StandardCharsets вместо этого для сопоставимых констант.

Обратите внимание, что эти константы не являются строками, они являются действительными экземплярами Charset . Все стандартные API-интерфейсы, которые принимают имя кодировки, также имеют перегрузку, которая принимает объект Charset который вы должны использовать вместо этого.

В случае, если эта страница появляется в каком-либо веб-поиске, с Java 1.7 теперь вы можете использовать java.nio.charset.StandardCharsets, чтобы получить доступ к постоянным определениям стандартных кодировок.

Их нет (по крайней мере, в стандартной библиотеке Java). Наборы символов варьируются от платформы к платформе, поэтому в Java нет стандартного списка.

Однако есть некоторые сторонние библиотеки, которые содержат эти константы. Одним из них является Guava (основные библиотеки Google): http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Charsets.html

Эта константа доступна (среди прочих, как: UTF-16 , US-ASCII и т. Д.) В classе org.apache.commons.codec.CharEncoding .

Вы можете использовать Charset.defaultCharset() API или свойство file.encoding .

Но если вы хотите, чтобы ваша собственная константа, вам нужно определить ее самостоятельно.

Если вы используете OkHttp для Java / Android, вы можете использовать следующую константу:

 import com.squareup.okhttp.internal.Util; Util.UTF_8; // Charset Util.UTF_8.name(); // String 

Константные определения для стандарта. Эти кодировки гарантированно будут доступны для каждой реализации платформы Java. поскольку 1,7

  package java.nio.charset; Charset utf8 = StandardCharsets.UTF_8; 

В Java 1.7+

Не используйте строку «UTF-8», вместо этого используйте параметр типа Charset :

 import java.nio.charset.StandardCharsets ... new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8); 
  • перечислить все файлы в папке, а также вложенные папки
  • Перезапустите службу, даже если приложение отключено и продолжает работать в фоновом режиме даже после закрытия приложения How?
  • Подстрочный индекс и надстрочный указатель строки в Android
  • Разбор JSON для JSON для JSON в JSONObject
  • Проверка программного режима энергосбережения
  • Драйвер JDBC PostgreSQL с Android
  • Как сделать копию файла в андроиде?
  • Изменение цвета плавающей кнопки Android
  • Android Microsoft Office Library (.doc, .docx, .xls, .ppt и т. Д.)
  • Ошибка Android «gps требует ACCESS_FINE_LOCATION», хотя мой файл манифеста содержит это
  • Программно получать MAC-адрес устройства Android
  • Давайте будем гением компьютера.