2011-03-04 76 views
1

我坐在一個奇怪的問題。我使用Apache的commons-codec(版本1.4)。以下代碼片段在獨立應用程序和EJB中在我的PC(Java版本1.6,GlassFish ver 2.1)上正常工作,但在我的服務器上,它無法正常工作(但是在獨立應用程序中它可以正常工作)Java:Commons-codec和base64解碼在服務器上不起作用

... 
org.apache.commons.codec.binary.Base64 b64 = new org.apache.commons.codec.binary.Base64(); 
byte[] bytes = b64.decode(makeSignedBytes(strB64.getBytes("UTF-8"))); 
... 
private byte[] makeSignedBytes(byte[] ubytes) 
{ 
    byte[] sbytes = new byte[ubytes.length]; 
    for (int i = 0; i < ubytes.length; i++) 
    { 
     sbytes[i] = (byte)(0x000000FF & ((int) ubytes[i])); 
    } 
    return sbytes; 
} 

輸入字符串是:

4-sDHXi_2Tu2a8k8NPs1FBT3t7UvN7CksUV6gfSE_Ks0aiCPbdeGM8qLdC58b2_hFH7lEp8m9cyPYQOTo4E0t66ZYP8n8tRhT87c8iD34pCd80qvP9vIXsNsodRaGzK5 

輸出字節數組應該是這樣的(我己印刷的話):

|E3|EB|03|1D|78|BF|D9|3B|B6|6B|C9|3C|34|FB|35|14|14|F7|B7|B5|2F|37|B0|A4|B1|45|7A|81|F4|84|FC|AB|34|6A|20|8F|6D|D7|86|33|CA|8B|74|2E|7C|6F|6F|E1|14|7E|E5|12|9F|26|F5|CC|8F|61|03|93|A3|81|34|B7|AE|99|60|FF|27|F2|D4|61|4F|CE|DC|F2|20|F7|E2|90|9D|F3|4A|AF|3F|DB|C8|5E|C3|6C|A1|D4|5A|1B|32|B9| 

96個字節長,當服務器得到它錯了,它只有93個字節,看起來像這樣:

|E2|C0|C7|5E|2D|93|BB|66|BC|93|C3|4F|B3|51|41|4F|7B|7B|52|F3|7B|0A|4B|14|57|A8|1F|48|42|AC|D1|A8|82|3D|B7|5E|18|CF|2A|2D|D0|B9|F1|BD|A1|14|7E|E5|12|9F|26|F5|CC|8F|61|03|93|A3|81|34|B7|AE|99|60|FF|27|F2|D4|61|4F|CE|DC|F2|20|F7|E2|90|9D|F3|4A|AF|3F|DB|C8|5E|C3|6C|A1|D4|5A|1B|32|B9| 

我不知道爲什麼它的作品在我的電腦,而不是服務器:(

+1

您確定Apache的commons-codec版本在您的計算機和服務器上的版本是嚴格相同的嗎?也許服務器自帶版本。 – reef 2011-03-04 10:30:42

+0

我還沒找到正確的地方:(但我發現它: – TungstenX 2011-03-04 10:47:14

+0

./lib/registration/commons-codec-1.3.jar ./domains/domain1/applications/j2ee-apps/anApplication/lib/ commons-codec-1.4.jar – TungstenX 2011-03-04 10:47:31

回答

1

錯誤的結果是在更換第二個字引起的輸入字符串(U+002D HYPHEN-MINUS)與U+2010 HYPHEN並用空格替換下劃線。也許這是通過一些「智能」文本編輯器傳遞輸入字符串的結果。所以,其實它看起來像你傳遞一個錯誤的輸入字符串

代碼中的其他缺陷:

  • makeSignedBytes()方法是沒有意義的,而不是需要
  • strB64.getBytes("UTF-8")是語義錯誤的,它應該是strB64.getBytes("ASCII")
+0

這兩個系統的字符串是相同的(我檢查字節級) – TungstenX 2011-03-07 06:31:21

+0

「ASCII」在兩臺機器上都不起作用 – TungstenX 2011-03-07 08:07:56

相關問題