jar包控制台乱码问题

问题与背景

在部署的时候,往往会遇到win系统跑控制台的情况,很多时候会遇到乱码,这时候我们需要通过设置编码格式来进行处理。

解决方案尝试

使用git的控制台(失败)

jar包控制台乱码问题_第1张图片
尝试了将控制台程序改为git控制台,还是乱码。该解决方案无效。

bat脚本 (失败)

通过在bat脚本中,规定chcp,然后执行java -jar 命令时加上-DFile.encoding=utf-8,写成bat脚本。

@echo off
chcp 65001
title "执行引擎启动终端"
java -DFile.encoding=utf-8 -jar EdgeMind-exec-0.0.1-SNAPSHOT.jar

修改maven的打包编码+配合bat脚本

最终的解决方案是在maven的pom中增加config属性,设置包的导出编码格式。maven的默认打包编码为gbk。需要设置为utf8

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.encoding>utf8</maven.compiler.encoding>
    </properties>

展示乱码无非就是编码和解码方式对不上,所以才会出现乱码。
可以涉及编码的地方有:java文件的编码方式,整个项目的编码,maven导出时候的编码,运行时候的控制台,jvm解码编码。只要这个链条保持统一,那么就会出现解码编码的问题了。
java文件和项目的编码,可以通过idea控制,找到对应的地方设置为utf8即可。
maven导出时候的编码,要通过设置编译时候的编码格式来控制,需要配置maven。
jar运行的时候,需要改变一下控制台的编码。所以bat脚本设置:chcp 65001。
java将程序运行的时候,jvm指定解码格式进行运行。

java -DFile.encoding=utf-8 -jar A.jar

你可能感兴趣的:(java技术栈,tensorflow,python,人工智能)