做房产网站能赚钱吗,wordpress 修改字体,建设部科研申报网站用着不好,舒城网站建设目录 比如#xff1a; 打包命令使用utf-8编码#xff1a; 1.当在idea中编写的程序,运行一切正常.但是当被打成jar包时,执行的程序会中文乱码.产生问题的原因和解决方案是什么呢? 一.问题分析 分别使用idea和jar包形式打印出System中所有的jvm参数---代码如下: public static… 目录 比如 打包命令使用utf-8编码 1.当在idea中编写的程序,运行一切正常.但是当被打成jar包时,执行的程序会中文乱码.产生问题的原因和解决方案是什么呢? 一.问题分析 分别使用idea和jar包形式打印出System中所有的jvm参数---代码如下: public static void main(String[] args) {printEnv();//读取excelExcelUtil.simpleRead(Constant.EXCEL_PATH, AddedTax.class, 0, new AddedTaxListenner());}private static void printEnv(){//获取环境变量MapString, String envs System.getenv();envs.forEach( (key,value) -{//System.out.println(env---key是: key ; env---value是: value);});//获取jvm属性Properties properties System.getProperties();properties.forEach((key, value) - {System.out.println(jvm---key是: key ; jvm---value是: value);});}idea的打印结果: jvm---key是: user.name ; jvm---value是: ZHULIBIN10 jvm---key是: file.encoding ; jvm---value是: UTF-8 jvm---key是: java.specification.version ; jvm---value是: 1.8 jvm---key是: java.awt.printerjob ; jvm---value是: sun.awt.windows.WPrinterJob jvm---key是: user.timezone ; jvm---value是: Asia/Shanghai jvm---key是: user.home ; jvm---value是: C:\Users\zhulibin10 jvm---key是: os.version ; jvm---value是: 10.0 jvm---key是: sun.management.compiler ; jvm---value是: HotSpot 64-Bit Tiered Compilers jvm---key是: java.specification.name ; jvm---value是: Java Platform API Specification jvm---key是: java.class.version ; jvm---value是: 52.0 jar包的打印结果: 如上图所示: 问题就在这里,当使用idea时候,file.encoding的值是UTF-8; 使用jar包运行则file.encoding的值是GBK,这是导致乱码的直接原因. java 乱码问题解决: -Dfile.encodingUTF-8 -Dfile.encoding 解释 在命令行中输入 java在给出的提示中会出现 -D 的说明 -Dnamevalue # set a system property -D 后面需要跟一个键值对作用是设置一项系统属性 对 -Dfile.encodingUTF-8 来说就是设置系统属性 file.encoding 为 UTF-8 那么 file.encoding 什么意思字面意思为文件编码。 搜索 java 源码只能找到 4 个文件中包含 file.encoding 的文件 也就是说只有四个文件调用了 file.encoding 这个属性。 在 java.nio.charset 包中的 Charset.java 中这段话的意思说的很明确了。 简单说就是默认字符集是在 java 虚拟机启动时决定的 依赖于 java 虚拟机所在的操作系统的区域以及字符集。 代码中可以看到默认字符集就是从 file.encoding 这个属性中获取的。 二.问题解决总结: 不管在任何平台,启动jar包的方式: java -jar -Dfile.encodingutf-8 YourName.jar
比如 打包命令使用utf-8编码 java -jar -Dfile.encodingutf-8 项目包名字.jar 三.解决cmd格式下输出乱码: 可写一个启动bat将start.bat改为java -jar -Dfile.encodingutf-8 YourName.jar问题就可以轻松解决。
如果还未解决请修改cmd程序的编码注册表信息 对于编译出的程序在 cmd 和 power shell 运行时都不能正确显示汉字。 网上查可以再命令窗口修改 1、打开CMD.exe命令行窗口 2、通过 chcp命令改变代码页UTF-8的代码页为65001 chcp 65001 执行该操作后代码页就被变成UTF-8了。 在当前窗口的确可以解决问题但是重新打开的cmd窗口或者power shell 窗口仍然不能正确显示汉字。 ———————————————— 版权声明本文为CSDN博主「魔都Thomas」的原创文章遵循CC 4.0 BY-SA版权协议转载请附上原文出处链接及本声明。 原文链接https://blog.csdn.net/qq_42058242/article/details/114933003