我已将我的项目更新为 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 一切正常。
有什么想法吗?
最佳答案
这是 Jack 编译器中的一个错误,看看这个 post .
Jack 一直在使用默认的 VM 编码,在 Windows 上是 windows-1252。因此,您的文本由 Jack 编译器使用 UTF-8
编码并使用 windows-1252
解码,这就是它们变成乱码的原因。
目前Gradle Plugin
不支持设置解码格式的API,所以我们需要等待...
关于更新到 Java 8 后,Android 以错误的编码显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39514276/