Java Cmd運行Jar出現(xiàn)亂碼的解決方案
Java Cmd運行Jar出現(xiàn)亂碼
今天做項目的時候遇到一個很頭疼的問題——無論在Java代碼中如何統(tǒng)一編碼為UTF8,在IDE中運行是完全沒問題的,但打包成Jar通過Bash和CMD運行,都會出現(xiàn)中文亂碼問題。
起初是覺得Java編譯時編碼出現(xiàn)了問題,但經(jīng)過幾小時的排查,終于找到中文亂碼問題的根源——cmd/bash默認的編碼是GBK。為了防止日后再踩坑,本文記錄問題的解決方案。
一、設(shè)定cmd的編碼為utf-8
打開cmd,輸入以下命令
chcp 65001
這樣既可以更改cmd的編碼為UTF-8了。
以下是常用的cmd編碼
- 字符編碼 對應(yīng)字符
- GBK(默認) 936
- 美國英語 437
- utf-8 65001
二、規(guī)定執(zhí)行java時的編碼方式
在cmd下,常見運行Jar包的命令如下
java -jar project.jar
但這樣可能會使得java運行時編碼不正確導(dǎo)致的報錯,這時候我們可以將運行Jar時,指定編碼參數(shù)
java -Dfile.encoding=utf-8 -jar project.jar
三、將以上命令打包成bat
每次啟動項目都要進行如上兩步的話,其實會非常麻煩,我們可以將以上兩部打包成bat批處理文件,具體步驟如下
3.1 在Jar的目錄下創(chuàng)建一個txt文件
通過記事本打開

3.2 將以上命令寫入txt文件中,保存

3.3 修改msgSystemStart.txt為msgSystemStart.bat

3.4 運行bat文件
可以看到,項目正常啟動,并且不會出現(xiàn)亂碼問題;
通過以上步驟,基本上可以將中文亂碼問題解決。
cmd運行java文件
一、進到j(luò)ava文件所在目錄
假設(shè)我們的A.java文件在F:\數(shù)據(jù)結(jié)構(gòu)\課程設(shè)計\45目錄下
打開cmd進到F盤

然后輸入“cd\數(shù)據(jù)結(jié)構(gòu)\課程設(shè)計\45”,進入文件存放路徑。成功之后會看到命令行前綴是帶有路徑的。

二、編譯java文件
成功進入之后,輸入“javac A.java”,此時cmd界面沒有什么反應(yīng),但是在目錄下會自動生成一個A.class的class文件,說明編譯成功了。

然后回到命令行輸入“java A”,回車,輸入測試數(shù)據(jù),得到結(jié)果。

三、導(dǎo)入txt文件測試
in.txt文件為輸入的數(shù)據(jù),out.txt為輸出數(shù)據(jù)。
注意,txt文件最好放在和java文件同級目錄下

之后out.txt會生成在45文件下

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
設(shè)計模式之責(zé)任鏈模式_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細介紹了設(shè)計模式之責(zé)任鏈模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08
Spring?Boot?基于?SCRAM?認證集成?Kafka?的過程詳解
在本篇文章中,我們將探討如何在?Spring?Boot?應(yīng)用中集成?Kafka?并使用?SCRAM?認證機制進行安全連接,并實現(xiàn)動態(tài)創(chuàng)建賬號、ACL?權(quán)限、Topic,以及生產(chǎn)者和消費者等操作,感興趣的朋友跟隨小編一起看看吧2024-08-08
一個例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用
synchronized是Java里的一個關(guān)鍵字,起到的一個效果是"監(jiān)視器鎖",它的功能就是保證操作的原子性,同時禁止指令重排序和保證內(nèi)存的可見性,下面這篇文章主要給大家介紹了關(guān)于如何通過一個例子帶你看懂Java中synchronized關(guān)鍵字到底怎么用的相關(guān)資料,需要的朋友可以參考下2022-10-10
springboot中的靜態(tài)資源加載順序優(yōu)先級
這篇文章主要介紹了springboot中的靜態(tài)資源加載順序優(yōu)先級,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
mybatis打印的sql日志不寫入到log文件的問題及解決
這篇文章主要介紹了mybatis打印的sql日志不寫入到log文件的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08

