1. 程式人生 > >JAVA亂碼問題——URL中的+,空格,/,?,%,#,&,= 及轉義處理

JAVA亂碼問題——URL中的+,空格,/,?,%,#,&,= 及轉義處理

解決辦法:將這些字元轉化成伺服器可以識別的字元,對應關係如下: 

下表中列出了一些URL特殊符號及編碼 

+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和引數 %3F
% 指定特殊字元 %25
# 表示書籤 %23
& URL 中指定的引數間的分隔符 %26
= URL 中指定引數的值 %3D

進行編碼的時候把字串用可識別的字元替換一下

        BASE64Encoder base64Encoder = new BASE64Encoder();
        String encoderStr = base64Encoder.encode(Objects.requireNonNull(bytes));
        //為防止在url傳輸的時候問題。
        return encoderStr.replaceAll("/", "-").replaceAll("\\+", "_");

解碼之前也要替換回來

            BASE64Decoder base64De = new BASE64Decoder();
            byte[] b = null;
            sn=sn.replaceAll("-", "/").replaceAll("_", "+");
            b = base64De.decodeBuffer(sn);