BASE64Encoder编码后出现换行符

 

最近在项目中用到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", "");个人不建议这样解决)

你可能感兴趣的:(后端,Java,编码,Base64)