BASE64Encoder編碼後出現換行符
阿新 • • 發佈:2018-12-09
最近在專案中用到sun.misc.BASE64Encoder包的BASE64Encoder對字串進行編碼,但是將編碼後的字串輸出後發現字串中存在換行符"\n","\r"
控制檯輸出:
gCIJJnZf+6n/9qxmBEdTMbqR+AWLe4X3WDg3erV8M1yA2MsIHEtpf1r5lJZT9I0wWiMOyoUwGhTW avmbwCGu3KiFRjBuYqoN/xvy677oIg/KHOb4i+ifidyjtYhe1JTjDc0hHlZNyyNNqn9U43XCH6tS hEw/dfZBGyTQVHEt2kw=
實際輸出應該是:
gCIJJnZf+6n/9qxmBEdTMbqR+AWLe4X3WDg3erV8M1yA2MsIHEtpf1r5lJZT9I0wWiMOyoUwGhTWavmbwCGu3KiFRjBuYqoN/xvy677oIg/KHOb4i+ifidyjtYhe1JTjDc0hHlZNyyNNqn9U43XCH6tShEw/dfZBGyTQVHEt2kw=
編碼後出現了換行符;去除換行符 字串正常解碼
查詢資料說:
根據RFC822規定,BASE64Encoder編碼每76個字元,還需要加上一個回車換行 部分Base64編碼的java庫還按照這個標準實行
解決:
換一個Base64編碼jar引入(或者string.replaceAll("\n", "").replaceAll("\r", "");個人不建議這樣解決)