天天看點

java亂碼和轉碼問題

在一個項目中,碰到一個有意思的問題,在調用某個第三方接口後回調本地代碼,對加密過的請求參數進行解密并轉碼,其中一種解碼方式無效,另一種解碼方式有效,何解?:

1、調用第三方接口時加密一個字元串:

String str = “akdfjlksjfdljsdlfslfld”;

(new BASE64Encoder()).encodeBuffer(str.getBytes());

2、同步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案沒有問題;而異步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案有問題:

String merPriv = request("MerPriv");

String newmerPriv = new String((new BASE64Decoder()).decodeBuffer(merPriv));

newmerPriv = URLDecoder.decode(newmerPriv,"UTF-8").trim();

3、異步回調本地代碼時解密并轉碼該字元串,使用下面的轉碼方案沒有問題:

String merPriv = request("MerPriv");

String newmerPriv = new String((new BASE64Decoder()).decodeBuffer(merPriv));

newmerPriv = new String(newmerPriv.getBytes("ISO-8859-1"),"UTF-8");

如需轉載,請注明出處http://blog.csdn.net/combating/article/details/39525235,謝謝!