Intellij IDEA 在 gradle-wrapper.properties 文件中用 'ı' 的 ASCII 覆盖 'i' 字符

Intellij IDEA overwrites 'i' character with ASCII of 'ı' in gradle-wrapper.properties file

有一个奇怪的问题,我不确定它的来源。

我正在使用 Intellij IDEA (2016 3.3) 和 Gradle (v3.3)。我用Windows10,土耳其语OS.

Gradle 有一个包装属性文件。 (./gradle/wrapper/gradle-wrapper.properties)

该文件的内容,由Gradle生成:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip

当我在 Intellij 中打开一个 Gradle 项目时,该文件的最后一行变成了:

distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-b\u0131n.zip

Intellij 将 bin 覆盖为 b\u0131n。我查了一下\u0131指的是什么,是'ı'字母的ASCII码。

并且因为 URL 坏了,我无法构建项目。

该文件中有很多 'i' 字母(未提及整个项目),但 Intellij 以某种方式将 'bin' 中的特定 'i' 转换为 'ı' 的 ASCI .

我有这个问题很久了,但是当我尝试手动更正字母时,Intellij 第一次坚持覆盖它。这次唯一的区别是我创建了一个包含多个模块的项目,这意味着有多个 gradle-wrapper.properties 文件。

你们知道为什么以及如何解决这个问题吗?

经过一番研究,我找到了错误的来源,它不是 Intellij IDEA,而是 Gradle。

@Input
    public String getDistributionUrl() {
        if (distributionUrl != null) {
            return distributionUrl;
        } else if (gradleVersion != null) {
            return locator.getDistributionFor(gradleVersion, distributionType.name().toLowerCase()).toString();
        } else {
            return null;
        }
    }

https://github.com/gradle/gradle/blob/master/subprojects/build-init/src/main/groovy/org/gradle/api/tasks/wrapper/Wrapper.java#L314

toLowerCase() 方法在这里使用我的语言环境 (tr-TR) 所以 "BIN".toLowerCase() 的输出是 "bın".

我在 Gradle-dev Google 组中添加了一个 issue 并提出了解决方案。

在build.gradle中添加;

task wrapper(type: Wrapper) {
    gradleVersion = '3.3'
    distributionUrl = "https://services.gradle.org/distributions/gradle-${gradleVersion}-all.zip"
}

帮我解决了。

查看 here 了解更多信息。