說我有以下代碼段,certificatejava證書物件在哪里:
byte[] data = certificate.getEncoded();
String stringData = new String(Base64.encodeBase64(data));
byte[] newData = Base64.decodeBase64(stringData)
有沒有機會data不等于newData?基本上,是否有資訊丟失,然后再回傳?謝謝
uj5u.com熱心網友回復:
假設沒有由于記憶體不足錯誤或類似的一般問題而爆炸,這段代碼應該沒問題,但有一個很大的例外:
您正在將Base64.encodeBase64(a byte[])的輸出轉換為 aString而不指定編碼。
這通常是一個壞主意,因為它將使用平臺默認編碼。
在這種特定情況下,它不太可能是一個實際問題。因為 Base64 的輸出只包含 ASCII 字符,并且幾乎所有現代平臺都使用與 ASCII 兼容的編碼作為其平臺默認編碼(例如 Android、Mac OS X 和大多數 Linux 發行版使用 UTF-8,Windows 傾向于使用一些代碼頁,但低 128 個位元組通常也與 ASCII 兼容)。
盡管如此,最好還是使用new String(Base64.encodeBase64(data), StandardCharsets.US_ASCII)只是為了確定(出于上述原因,ISO_8859_1并且UTF_8也可以使用,但是US_ASCII是“正確的”選擇)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/352782.html
下一篇:Java組態檔多維陣列
