最近在做一個(gè)項(xiàng)目,項(xiàng)目總的來(lái)說(shuō)就是和數(shù)據(jù)庫(kù)打交道,取出數(shù)據(jù)來(lái)通過(guò)HTTP協(xié)議提交到一個(gè)接口上去。具體功能不多說(shuō)了,只是講這里面的一點(diǎn)——編碼問(wèn)題
項(xiàng)目當(dāng)中,涉及到取所有數(shù)據(jù)的MD5值。
在Java項(xiàng)目中,個(gè)人喜歡將項(xiàng)目的默認(rèn)編碼改為UTF-8。使用的開(kāi)發(fā)工具以Eclipse為主。然而,奇怪的問(wèn)題出現(xiàn)了。當(dāng)我在IDE中對(duì)項(xiàng)目進(jìn)行調(diào)試的時(shí)候沒(méi)有任何問(wèn)題,但是打成了jar包后再通過(guò)
1
|
java -jar project.jar |
運(yùn)行的時(shí)候,每次提交數(shù)據(jù),接口都會(huì)返回?cái)?shù)據(jù)說(shuō)我的簽名不正確。換句話說(shuō)就是我的最后一步,做MD5運(yùn)算的時(shí)候出了問(wèn)題。
為什么打了jar包就不行呢?幾經(jīng)波折,又是查看參數(shù)的hashCode,又是檢查所有提交內(nèi)容的十六進(jìn)制數(shù)據(jù),發(fā)現(xiàn)是文本編碼出了問(wèn)題。在Eclipse中是正確的,但是打出jar包后,啟動(dòng)命令行一直沒(méi)設(shè)置字符串默認(rèn)編碼,因此java虛擬機(jī)就按照所在系統(tǒng)的默認(rèn)編碼運(yùn)行了。我使用的是Windows環(huán)境,那么自然是GBK編碼。
后來(lái)通過(guò)查閱資料,解決的辦法就是加一個(gè)參數(shù)指定編碼:
1
|
java -Dfile.encoding=utf- 8 -jar project.jar |
這樣就可以了。工具正常運(yùn)行了。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
原文鏈接:http://blog.csdn.net/chaijunkun/article/details/7624338