1. 程式人生 > >Java應用打包後執行需要注意編碼問題

Java應用打包後執行需要注意編碼問題

本文出處:http://blog.csdn.net/chaijunkun/article/details/7624338,轉載請註明。由於本人不定期會整理相關博文,會對相應內容作出完善。因此強烈建議在原始出處檢視此文。

最近在做一個專案,專案總的來說就是和資料庫打交道,取出資料來通過HTTP協議提交到一個介面上去。具體功能不多說了,只是講這裡面的一點——編碼問題
專案當中,涉及到取所有資料的MD5值。


在Java專案中,個人喜歡將專案的預設編碼改為UTF-8。使用的開發工具以Eclipse為主。然而,奇怪的問題出現了。當我在IDE中對專案進行除錯的時候沒有任何問題,但是打成了jar包後再通過

java -jar project.jar

執行的時候,每次提交資料,介面都會返回資料說我的簽名不正確。換句話說就是我的最後一步,做MD5運算的時候出了問題。

為什麼打了jar包就不行呢?幾經波折,又是檢視引數的hashCode,又是檢查所有提交內容的十六進位制資料,發現是文字編碼出了問題。在Eclipse中是正確的,但是打出jar包後,啟動命令列一直沒設定字串預設編碼,因此java虛擬機器就按照所在系統的預設編碼運行了。我使用的是Windows環境,那麼自然是GBK編碼。


後來通過查閱資料,解決的辦法就是加一個引數指定編碼:
java -Dfile.encoding=utf-8 -jar project.jar
這樣就可以了。工具正常運行了。