Java Cmd运行Jar出现乱码的解决方案

yizhihongxing

请看以下完整攻略:

Java Cmd运行Jar出现乱码的解决方案

很多Java程序员在用cmd运行jar包时,都会遇到乱码的问题。这主要是因为cmd默认编码是GBK而不是UTF-8,而jar包中的资源文件往往是UTF-8编码的。本文就为大家介绍几种解决方案。

方案一:修改Cmd编码为UTF-8

这种方式比较简单,只需要在cmd输入以下命令:

chcp 65001

这个命令可以将cmd编码修改为UTF-8,再运行jar包就不会乱码了。

方案二:使用Java参数设置编码

这种方式需要在调用java命令时加入-Dfile.encoding参数,指定编码类型。例如,我们要运行Test.jar包,将编码设置为UTF-8,命令如下:

java -Dfile.encoding=UTF-8 -jar Test.jar

这样就可以保证资源文件的编码一致,不会出现乱码。

示例一:中文文件名乱码

假设我们有一个Test.jar包,里面包含以下文件:

.
├── Test.jar
└── 测试.txt

其中测试.txt文件是UTF-8编码的,文件名是中文。

我们可以使用方案二的方式运行这个jar包,命令如下:

java -Dfile.encoding=UTF-8 -jar Test.jar

这样,在cmd中就可以正确显示中文文件名和文件内容了。

示例二:读取文件内容乱码

假设我们有一个Test.jar包,里面包含以下文件:

.
├── Test.jar
└── Message.properties

其中Message.properties文件是UTF-8编码的,内容是:

hello=你好

我们可以写一个测试程序来读取这个文件,并输出里面的内容:

import java.io.IOException;
import java.util.Properties;

public class Test {
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();
        properties.load(Test.class.getResourceAsStream("/Message.properties"));
        System.out.println(properties.getProperty("hello"));
    }
}

如果我们直接运行这个程序,结果很可能会出现乱码。这时我们可以使用方案二的方式运行这个jar包,命令如下:

java -Dfile.encoding=UTF-8 -jar Test.jar

这样,在cmd中就可以正确输出中文内容了。

结语

以上就是在Java Cmd运行Jar出现乱码的解决方案。希望本文可以帮助大家解决相关问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Cmd运行Jar出现乱码的解决方案 - Python技术站

(1)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringData JPA的常用语法汇总

    下面将详细讲解关于Spring Data JPA的常用语法汇总。 一、什么是Spring Data JPA Spring Data JPA是Spring框架的一个扩展模块,可以使用简单且统一的API,提供了CRUD操作,还支持基于方法名称的查询、@Query查询以及Specification查询等。它更加注重与实体类相关的持久化层操作,将封装JPA的强大功能…

    Java 2023年6月2日
    00
  • 基于Spring的Maven项目实现发送邮件功能的示例

    这里是一份基于Spring的Maven项目实现发送邮件功能的攻略,包含了完整的步骤和示例,帮助你了解如何在项目中实现发送邮件的功能。 1. 配置POM文件 首先,咱们需要在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework</groupId> <ar…

    Java 2023年6月15日
    00
  • 利用json2POJO with Lombok 插件自动生成java类的操作

    利用json2POJO with Lombok插件自动生成Java类是一个方便快捷的方式,特别是在进行大量API接口开发的时候。下面是使用该插件的完整攻略。 1. 下载插件 首先,需要在Intellij IDEA中安装json2POJO with Lombok插件。可以通过Intellij IDEA的插件市场来搜索和安装该插件。 2. 生成Java类 在In…

    Java 2023年5月26日
    00
  • java学习:日期的运算代码

    下面是“Java学习:日期的运算代码”的完整攻略。 Markdown格式化代码 为了更好地展示代码块,请使用Markdown格式化。 可以使用三个反引号包裹代码块,例如: // 这是Java的示例代码 public static void main(String[] args) { System.out.println("Hello World!&…

    Java 2023年5月20日
    00
  • Java处理InterruptedException异常的理论与实践

    Java处理InterruptedException异常的理论与实践 在多线程编程中,InterruptedException异常是常见的一种异常。该异常是由Thread类的interrupt()方法引发的,常用于中止线程的运行,但在线程等待、阻塞或者睡眠时会被抛出。本文将详细介绍Java处理InterruptedException异常的理论与实践。 理论 …

    Java 2023年5月27日
    00
  • JSP中EL表达式用法_动力节点Java学院整理

    以下是关于“JSP中EL表达式用法_动力节点Java学院整理”的完整攻略。 EL表达式的基础语法 EL表达式是JSP中非常重要的一个语言特性,它可以方便地在JSP页面中操作各种数据类型,包括JavaBean、集合、数组、字符串、数字等。EL表达式的基础语法如下: ${expression} 在EL表达式中,expression可以是任何符合Java语法规则的…

    Java 2023年6月15日
    00
  • Java中redis的基本类型

    以下是 “Java中redis的基本类型”的详细攻略。 什么是Redis Redis是一个开源的基于键值对存储的NoSQL数据库系统。它支持字符串、列表、集合、有序集合、哈希表等数据类型,同时也支持发布订阅、事务、Lua脚本等高级功能。Redis的主要优势是性能高、稳定性强,同时支持丰富的数据类型和数据结构。 Redis中的基本数据类型 字符串类型 Redi…

    Java 2023年5月20日
    00
  • 在Java中按值调用和按引用调用

    在Java中,传递参数时有两种方式:按值传递和按引用传递。这两种方式有着不同的使用场景和特点,需要进行深入的探讨。 按值传递 在Java中,按值传递是指将数据(即变量的值)复制一份传递给被调用的方法。修改被传递进方法中的值不会影响调用方法前变量的值。 下面是一个按值传递的例子: public class PassByValueExample { public…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部