JAVA亂碼問題——URL中的+,空格,/,?,%,#,&,= 及轉義處理
阿新 • • 發佈:2018-12-19
解決辦法:將這些字元轉化成伺服器可以識別的字元,對應關係如下:
下表中列出了一些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);