Java Cmd運(yùn)行Jar出現(xiàn)亂碼的解決方案
Java Cmd運(yùn)行Jar出現(xiàn)亂碼
今天做項(xiàng)目的時(shí)候遇到一個(gè)很頭疼的問(wèn)題——無(wú)論在Java代碼中如何統(tǒng)一編碼為UTF8,在IDE中運(yùn)行是完全沒(méi)問(wèn)題的,但打包成Jar通過(guò)Bash和CMD運(yùn)行,都會(huì)出現(xiàn)中文亂碼問(wèn)題。
起初是覺(jué)得Java編譯時(shí)編碼出現(xiàn)了問(wèn)題,但經(jīng)過(guò)幾小時(shí)的排查,終于找到中文亂碼問(wèn)題的根源——cmd/bash默認(rèn)的編碼是GBK。為了防止日后再踩坑,本文記錄問(wèn)題的解決方案。
一、設(shè)定cmd的編碼為utf-8
打開(kāi)cmd,輸入以下命令
chcp 65001
這樣既可以更改cmd的編碼為UTF-8了。
以下是常用的cmd編碼
- 字符編碼 對(duì)應(yīng)字符
- GBK(默認(rèn)) 936
- 美國(guó)英語(yǔ) 437
- utf-8 65001
二、規(guī)定執(zhí)行java時(shí)的編碼方式
在cmd下,常見(jiàn)運(yùn)行Jar包的命令如下
java -jar project.jar
但這樣可能會(huì)使得java運(yùn)行時(shí)編碼不正確導(dǎo)致的報(bào)錯(cuò),這時(shí)候我們可以將運(yùn)行Jar時(shí),指定編碼參數(shù)
java -Dfile.encoding=utf-8 -jar project.jar
三、將以上命令打包成bat
每次啟動(dòng)項(xiàng)目都要進(jìn)行如上兩步的話,其實(shí)會(huì)非常麻煩,我們可以將以上兩部打包成bat批處理文件,具體步驟如下
3.1 在Jar的目錄下創(chuàng)建一個(gè)txt文件
通過(guò)記事本打開(kāi)
3.2 將以上命令寫(xiě)入txt文件中,保存
3.3 修改msgSystemStart.txt為msgSystemStart.bat
3.4 運(yùn)行bat文件
可以看到,項(xiàng)目正常啟動(dòng),并且不會(huì)出現(xiàn)亂碼問(wèn)題;
通過(guò)以上步驟,基本上可以將中文亂碼問(wèn)題解決。
cmd運(yùn)行java文件
一、進(jìn)到j(luò)ava文件所在目錄
假設(shè)我們的A.java文件在F:\數(shù)據(jù)結(jié)構(gòu)\課程設(shè)計(jì)\45目錄下
打開(kāi)cmd進(jìn)到F盤(pán)
然后輸入“cd\數(shù)據(jù)結(jié)構(gòu)\課程設(shè)計(jì)\45”,進(jìn)入文件存放路徑。成功之后會(huì)看到命令行前綴是帶有路徑的。
二、編譯java文件
成功進(jìn)入之后,輸入“javac A.java”,此時(shí)cmd界面沒(méi)有什么反應(yīng),但是在目錄下會(huì)自動(dòng)生成一個(gè)A.class的class文件,說(shuō)明編譯成功了。
然后回到命令行輸入“java A”,回車(chē),輸入測(cè)試數(shù)據(jù),得到結(jié)果。
三、導(dǎo)入txt文件測(cè)試
in.txt文件為輸入的數(shù)據(jù),out.txt為輸出數(shù)據(jù)。
注意,txt文件最好放在和java文件同級(jí)目錄下
之后out.txt會(huì)生成在45文件下
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud之服務(wù)注冊(cè)與發(fā)現(xiàn)Spring Cloud Eureka實(shí)例代碼
這篇文章主要介紹了SpringCloud之服務(wù)注冊(cè)與發(fā)現(xiàn)Spring Cloud Eureka實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04SpringBoot Test 多線程報(bào)錯(cuò)的根本原因(dataSource already
在使用Springboot test進(jìn)行相關(guān)測(cè)試的時(shí)候,發(fā)現(xiàn)開(kāi)啟線程操作數(shù)據(jù)庫(kù)的時(shí)候異常,這篇文章主要介紹了SpringBoot Test 多線程報(bào)錯(cuò):dataSource already closed的根本原因及解決方法,需要的朋友可以參考下2022-06-06Java?Thread?類(lèi)和Runnable?接口詳解
這篇文章主要介紹了Java?Thread?類(lèi)和Runnable接口詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的三種方式小結(jié)
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的三種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java利用位運(yùn)算實(shí)現(xiàn)加減乘除的方法詳解
我們經(jīng)常使用的加減乘除,我們所看到的只是表面的效果,那么加減乘除在底層究竟是怎么實(shí)現(xiàn)的?今天就讓我們一探究竟2022-08-08