Android Base64编码出现换行

文章讲述了在Android中进行Base64编码时遇到的换行问题,以及如何通过设置Base64.NO_WRAP参数来避免字符串因超过76个字符而自动添加换行符。此外,解释了Base64编码的原理和在MIME传输中的作用。
摘要由CSDN通过智能技术生成

搞不定的时候可以同一个音频文件转base64比较一下看看哪里不一样 



    /**
     * 将文件转换为Base64字符串
     *
     * @param file 文件对象
     * @return Base64编码的字符串
     * @throws IOException 读取文件时可能抛出的异常
     */
    public static String mp3ToBase64(File file) {
        byte[] buffer = new byte[(int) file.length()];
        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            fileInputStream.read(buffer);
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }

        return Base64.encodeToString(buffer, Base64.NO_WRAP);
    }

Android Base64编码出现换行_android base64.encodetostring 换行符问题_Beluga_白鲸的博客-CSDN博客

Base64编码,发现编码后总是有换行,google后发现字符串过长(一般超过76)时会自动在中间加一个换行符,不能使用默认设置,改为NO_WRAP就可以了

android.util.Base64.encodeToString(string.getBytes(), Base64.NO_WRAP);
注1:Base64几个参数说明
 
 
    CRLF 这个参数看起来比较眼熟,它就是Win风格的换行符,意思就是使用CR LF这一对作为一行的结尾而不是Unix风格的LF
 
    DEFAULT 这个参数是默认,使用默认的方法来加密
 
    NO_PADDING 这个参数是略去加密字符串最后的”=”
 
    NO_WRAP 这个参数意思是略去所有的换行符(设置后CRLF就没用了)
 
    URL_SAFE 这个参数意思是加密时不使用对URL和文件名有特殊意义的字符来作为加密字符,具体就是以-和_取代+和/
注2:深层次原因
Base64是一种字符串编码格式,Base64采用A-Z a-z 0-9 “+“ “/“这一共64个字符来编码原始字符(还有垫字符“=“)。一个字符本身是1个字节,也就是8位,而Base64编码后的一个字符只能表示能表示6位的信息。也就是原始字符串中3字节的信息编码会变成4字节的信息。Base64的主要作用是满足MIME传输需求,在传输过程中都是用ASCII支持的可见字符。Base64是基于字节的编码,所以不同字符集下的相同字符在Base64下可能有着不同编码。根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行 部分Base64编码的java库还按照这个标准实行,所以会有又换行符。
————————————————
版权声明:本文为CSDN博主「Beluga_白鲸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012246458/article/details/81665987

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值