Android отображает текст в неправильной кодировке после обновления до Java 8

Я обновил свой проект до версии SDK версии 24 и Java 8 и столкнулся с странной проблемой кодирования.

По какой-то странной причине Android обрабатывает мои жестко закодированные строки UTF-8 как Windows-1251, и, таким образом, текст искажается.

Как это:

Введите описание изображения здесь

Это то, что я изменил:

compileSdkVersion 24 buildToolsVersion "24.0.2" compileOptions { encoding = 'utf-8' sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } 

И то, что я пробовал:

  • Изменено кодирование в настройках Android Studio
  • Добавил compileOptions.encoding = 'windows-1251' и compileOptions.encoding = 'utf-8'
  • Добавлена ​​системная переменная JAVA_TOOL_OPTIONS: -Dfile.encoding = UTF8

Если я вернусь обратно к Java 7, все будет в порядке.

Есть идеи?

Solutions Collecting From Web of "Android отображает текст в неправильной кодировке после обновления до Java 8"

Это ошибка в компиляторе Джека, посмотрите этот пост .

Джек использовал стандартную кодировку VM, которая на окнах – это windows-1252. Итак, ваш текст закодирован с UTF-8 и декодирован с помощью windows-1252 компилятором Джека, и именно поэтому они стали искаженными.

До сих пор Gradle Plugin не поддерживает API для установки формата декодирования, поэтому нам нужно подождать …

У меня была такая же проблема в Windows (но не в Mac OSX). Эта строка решает мою проблему (поставьте ее в gradle.properties вашего проекта):

 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 

Обратите внимание, что эта часть меняет кодировку:

 -Dfile.encoding=UTF-8