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

标签 android android-studio encoding utf-8 java-8

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

由于某些奇怪的原因,Android 将我的硬编码 UTF-8 字符串视为 Windows-1251,因此文本出现乱码。

像这样:

enter image description here

这是我改变的:

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/

相关文章:

android-studio - android studio 3.1:build:gradle:3.1.0-设置输出文件名时不支持绝对路径

java - Jasper 报表、子报表和编码

unicode - 比较不同编码的文件

python - 是否存在从 utf8 到 latin-1 的现有映射? Python

android - 如何在Android中以编程方式将应用程序限制为特定数量的用户使用

java - ARCore虚拟物体运动

java - HttpResponse 仅显示来自 Java 应用程序的 404 错误,而不显示来自网站的 404 错误

android - 在android中创建toast并指定位置

javascript - 网站在不同的显示器分辨率下看起来不同 & CSS 不工作

php - 如何比较 Android 和 MySQL 中的变量值?