BASE64Encoder的坑:自动添加回车符

最近需要把图片Base64之后传到前端,一开始直接用的sun.misc.BASE64Encoder,但发现这个类有点问题,会自动往转换出来的String里添加换行符。无奈之下用replaceAll把\r\n都去掉,这下在本机运行的时候终于没问题了。

等到放到服务器上之后,还是不行。检查一下输出,发现竟然还有换行符……再一查,得,每个平台的换行符还不一样,Windows下是\r\n,Linux下是\n,Mac下是\r。服务器是Linux,难怪还有换行符……

知道了问题,解决起来也简单,一种是把\r\n都去掉,另一种就是干脆把这个倒霉的sun.misc.BASE64Encoder换掉。用Java 1.8的话,直接用自带的java.util.Base64;JDK版本低的话,可以用Apache commons里的Base64类。