【问题标题】:Android displays text in wrong encoding after update to Java 8更新到 Java 8 后,Android 以错误的编码显示文本
【发布时间】:2017-01-23 16:00:15
【问题描述】:

我已将我的项目更新到 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编译器吗?
  • 我在 build.gradle 中使用了 jackOptions { enabled true }

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


【解决方案1】:

我在 Windows 中遇到了同样的问题(但不是 Mac OSX)。这一行解决了我的问题(把它放在你项目的gradle.properties 中):

org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

注意这部分改变编码:

-Dfile.encoding=UTF-8

【讨论】:

    【解决方案2】:

    这是 Jack 编译器中的一个错误,请查看 post

    Jack 一直在使用默认的 VM 编码,在 windows 上是 windows-1252。因此,Jack 编译器使用UTF-8 编码并使用windows-1252 解码您的文本,这就是它们出现乱码的原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 2014-10-13
      • 2021-01-28
      • 2014-03-20
      • 2017-02-17
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多