亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Base64 Encode 函數與 PHP Base64 Encode 函數相同嗎?

Java Base64 Encode 函數與 PHP Base64 Encode 函數相同嗎?

米脂 2023-07-19 15:44:18
我正在嘗試使用客戶端提供的值來測試 PHP 中的 Soap Security 標頭。他們提供的價值就像...wTAmCL9tmg6KNpeAQOYubw==...并說這是一個 Base64 編碼值。然而,當我通過 PHP 的 Base64 解碼函數運行它時......base64_decode("wTAmCL9tmg6KNpeAQOYubw==");它將其翻譯為:?0&??m?6?@?.o如果我用Java解碼它......import java.util.Base64;import java.util.Arrays;/** * hello */public class hello {    public static void main(String[] args) {        Base64.Decoder decoder = Base64.getDecoder();        Base64.Encoder encoder = Base64.getEncoder();        String stringEncoded = "wTAmCL9tmg6KNpeAQOYubw==";        System.out.println("This is a decoded value: " + decoder.decode(stringEncoded));        System.out.println("This is a re-coded value: " + encoder.encode(decoder.decode(stringEncoded)));    }}我得到一個像這樣的解碼字符串:[B@7229724f但是如果我嘗試重新編碼該字符串,我會得到以下結果:[B@4c873330我在這里缺少什么?
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

您缺少的是解碼 Base 64 值的結果并不打算作為字符串打印。事實上,您可以在 Java println 的輸出中看到這一點。[B@7229724f 不是解碼字節的字符串表示形式。這是 Java byte[] 的打印方式。[B表示字節數組,其余字符是對象標識的十六進制數字。(對于每個字節數組實例,它都會以不同的方式打印,并且與數組的內容無關。)

如果您想要字節的字符串表示形式,則需要從字節構造一個字符串:

    System.out.println("This is a decoded value: " + new String(decoder.decode(stringEncoded), StandardCharsets.UTF_8));
    System.out.println("This is a re-coded value: " + new String(encoder.encode(decoder.decode(stringEncoded), StandardCharsets.UTF_8));


查看完整回答
反對 回復 2023-07-19
?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

推薦的編碼是 UTF-8。



查看完整回答
反對 回復 2023-07-19
  • 2 回答
  • 0 關注
  • 305 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號