【发布时间】:2017-11-13 09:10:20
【问题描述】:
我正在使用来自this answer 的以下方法/代码对一些重音文本进行规范化
重音去除:
String accented = "árvíztűrő tükörfúrógép";
String normalized = Normalizer.normalize(accented, Normalizer.Form.NFD);
normalized = normalized.replaceAll("[^\\p{ASCII}]", "");
System.out.println(normalized);
当我使用 IntelliJ 运行它时(作为单元测试的一部分),这给出了预期的结果:
arvizturo tukorfurogep
如果我从命令行(通过 gradle)运行它,我会得到:
ArvAztArA tAkArfArAgA
在这两种情况下,我都使用同一台 PC 和 Java 1.8.0_151。
相关部分来自build.gradle:
apply plugin: 'java'
apply plugin: 'idea'
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
是什么导致了这种不同的行为?以及如何确保在任何地方都能获得预期的结果?
【问题讨论】:
-
能否请您分享您的 gradle 文件,因为我使用 gradle 尝试了相同的代码,它有效。
-
问题更新为
gradlesn-p。 -
你的 gradle 中的运行任务在哪里?,你使用 gradle 中的任务运行代码,就像这样:task(runui, dependsOn: 'classes', type: JavaExec) { main = 'stockticker. ui.StockTickerDriver' 类路径 = sourceSets.main.runtimeClasspath }
-
在命令行输入
gradle clean test -
想象一下,看起来更像是编译问题而不是运行时问题。定义您的源编码(或仅在源代码中使用 Unicode 转义和 ascii)
标签: java string unicode-normalization