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, все в порядке.
Есть идеи?
2 ответа
Это ошибка в компиляторе Джека, посмотрите на этот пост.
Джек использовал кодировку виртуальной машины по умолчанию, которая в Windows - 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