关于文字转base64,base64转文字的坑(数字短信)

本文介绍了如何在阿里云数字短信服务中处理文字、图片和媒体文件的Base64编码转换。通过JavaScript代码示例展示了图片和视频文件如何转化为Base64格式,同时指出了在处理中文字符串时遇到的问题。解决方案是采用js-base64库,成功解决了中文乱码问题,确保了数据在传输过程中的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中文与base64互转(数字短信)

最近在做一个阿里云数字短信
短信内容包括文字、图片、视频、音频,比彩信高级一点点。
其中的文字、图片、视频、音频内容都需要转换成base64格式的文件来传输。

图片和媒体文件转base64没什么问题,有用到的小伙伴也可以参考下面的代码

// 上传图片
async function selectPicture() {
    return new Promise(resolve => {
        var file = $('<input type=file accept=".jpg,.png,.gif">');
        $(file).change(async () => {
            var reader = new FileReader();
            reader.onloadend = () => {
                console.log(file[0].files[0])
                let Obj = {
                    fileSuffix: file[0].files[0].name.split('.')[1],
                    fileName: file[0].files[0].name,
                    fileSize: file[0].files[0].size,
                    fileContents: reader.result
                }
                console.log(Obj)
                resolve(Obj);
            };
            reader.readAsDataURL(file[0].files[0]);
        });
        $(file).trigger('click');
    });
}
// 上传媒体文件
async function selectVideo() {
    return new Promise(resolve => {
        var file = $('<input type=file accept=".mp4,.mp3">');
        $(file).change(async () => {
            var reader = new FileReader();
            reader.onloadend = () => {
                console.log(file[0].files[0])

                let Obj = {
                    fileSuffix: file[0].files[0].type.split('/')[1],
                    fileName: file[0].files[0].name,
                    fileSize: file[0].files[0].size,
                    fileContents: reader.result
                }
                console.log(Obj)
                resolve(Obj);
            };
            reader.readAsDataURL(file[0].files[0]);
        });
        $(file).trigger('click');
    });
}

文字转base64就被坑了一把
刚刚开始时使用的是下面的方法

//字符串转base64
function encode(str){
// 对字符串进行编码
var encode = encodeURI(str);
// 对编码的字符串转化base64
var base64 = btoa(encode);
return base64;
}
 
// base64转字符串
function decode(base64){
// 对base64转编码
var decode = atob(base64);
// 编码转字符串
var str = decodeURI(decode);
return str;
}

乍一用似乎没什么毛病也转成base64的格式了,转成base64,base64转文字都没啥问题。(英文的不会有问题,中文的base64的结果其实是encode之后的内容),到了阿里那边的模板中就成了乱码。
定位到这个问题之后就引用了js-base64

// npm安装
$ npm install --save js-base64

// 引入使用
import {Base64} from 'js-base64';

// 文字转base64
Base64.toBase64(str);
// base64转文字
Base64.fromBase64(base64)

亲测没什么毛病,希望有缘人能用的上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值