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

我已经更新了我的项目到SDK版本24和Java 8,并遇到了一个奇怪的编码问题。

由于一些奇怪的原因,Android将我的硬编码的UTF-8string视为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'
  • 添加系统variablesJAVA_TOOL_OPTIONS:-Dfile.encoding = UTF8

如果我恢复到Java 7一切正常。

有任何想法吗?

Solutions Collecting From Web of "在更新到Java 8之后,Android以错误的编码显示文本"

这是杰克编译器中的一个bug,看看这个post 。

杰克一直在使用默认的VM编码,在windows上是windows-1252。 所以,你的文本是用UTF-8编码的,由Jack编译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