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