更新到Java 8后,Android会以错误的编码显示文本

Fel*_*lus 8 encoding android utf-8 java-8 android-studio

我已将我的项目更新为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
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 在Android Studio设置中更改了编码
  • 添加了compileOptions.encoding ='windows-1251'和compileOptions.encoding ='utf-8'
  • 添加了系统变量JAVA_TOOL_OPTIONS:-Dfile.encoding = UTF8

如果我恢复到Java 7,一切都还可以.

有任何想法吗?

L. *_*ter 6

这是Jack编译器中的一个bug,看看这篇文章.

Jack一直在使用默认的VM编码,在windows上是windows-1252.因此,您的文本由Jack编译器编码UTF-8和解码windows-1252,这就是为什么它们变得乱码.

到现在为止,Gradle Plugin不支持API来设置解码格式,所以我们需要等待......