我在这里遇到一些编码问题。
这是在W10操作系统上,但我使用DOS控制台和Cygwin shell直接运行任务。在Eclipse中我使用Buildship插件运行,而对于我的“生产”输出,我正在制作一个“胖”jar(即包含所有依赖jar)。
要让胖jar在DOS控制台中运行,我会这样:
> chcp 65001
> java -jar -Dfile.encoding=UTF-8 myFatJar.jar
要让胖jar在Cygwin控制台中运行,我省略了“chcp”命令
...这两个都运行正常,没有编码probs。
我的run
任务看起来像这样:
task myRun(type: JavaExec, dependsOn: assemble ) {
standardInput = System.in
classpath sourceSets.main.runtimeClasspath
main = "core.ConsoleHandler"
}
当我在Eclipse(Buildship插件)中运行它时,没有编码probs。
当我在gradle目录中时,我会这样:
> gradle myRun
无论是使用DOS还是使用Cygwin控制台,我都会遇到编码问题:Unicode字符问题会转到System.out
。
在我的gradle.build中(我正在使用application
插件)我尝试了这个:
applicationDefaultJvmArgs = ["-Dfile.encoding=UTF-8"]
......但这似乎没有任何效果。
顺便说一句,在测试期间,我有一些输出到System.out
...当我检查JUnit / Mockito测试结果时,这很好。
在我寻求“连续使用我的所有鸭子”的过程中,我也试图弄乱Java代码本身:而不是直接使用System.out
我尝试了这个:
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.print( message );
...但是这会在运行测试时导致输出到System.out
的编码问题!
gradle命令applicationDefaultJvmArgs
让我想知道在运行JavaExec
类型的任务时是否有办法将“非默认”开关传递给JVM ......
稍晚一点
哈......这就是这些事情的方式:
我在myRun
任务中添加了以下行:
jvmArgs "-Dfile.encoding=UTF-8"
... DOS和Cygwin控制台运行的编码问题已经解决了!但是,当我在Eclipse Buildship中运行myRun
任务时,我现在遇到了编码问题!:
référéjugedes~s:“法官坐在钱伯斯处理紧急问题 事项“ 发明法官的合并者
'é'应该是'é'(并且在添加此jvmArgs
参数之前)
总的来说,这是一个改进......但是从专家那里了解到这里发生了什么......
答案 0 :(得分:0)
有时 做 的事情是有道理的......虽然我仍然觉得编码是一个令人痛苦,令人生畏和破坏灵魂的主题。
我的Eclipse"运行配置"因为myRun缺少这个JVM参数。添加它很简单:运行 - >运行配置 - >选择" myRun" - >参数选项卡 - > JVM参数。
我所有的鸭子似乎都是UTF-8排。乌拉。