Java,UTF-8和Windows控制台
时间:2020-03-05 18:50:58 来源:igfitidea点击:
我们尝试在Windows上使用Java和UTF-8. 该应用程序在控制台上写入日志,我们希望对日志使用UTF-8,因为我们的应用程序具有国际化的日志。
可以配置JVM,以便使用-Dfile.encoding = UTF-8作为JVM的参数来生成UTF-8. 它工作正常,但Windows控制台上的输出出现乱码。
然后,我们可以将控制台的代码页设置为65001(chcp 65001),但是在这种情况下,.bat文件不起作用。这意味着当我们尝试通过脚本(名为start.bat)启动应用程序时,绝对没有任何反应。命令简单返回:
C:\Application> chcp 65001 Activated code page: 65001 C:\Application> start.bat C:\Application>
但是没有chcp 65001
就没有问题,可以启动该应用程序。
有什么暗示吗?
解决方案
回答
我们是否尝试使用PowerShell,而不是旧的cmd.exe。
回答
试试chcp 65001 && start.bat
回答
在Linux中,我们有一些类似的问题。我们的代码在ISO-8859-1中(大多数情况下与cp-1252兼容),但是控制台是UTF-8,因此代码无法编译。只需将控制台更改为ISO-8859-1,就可以破坏UTF-8中的构建脚本。我们找到了两个选择:
1定义一些标准的编码并保持不变。那是我们的选择。我们选择将所有内容保留在ISO-8859-1中,并修改构建脚本。
2在开始任何任务之前,甚至在构建脚本内部,都要设置编码。像埃里克森所说的一些代码。在Linux中就像:
lang=pt_BR.ISO-8859-1 /usr/local/xxxx
我的日食还是这样。两者都运作良好。