码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Js进行base64编码、解码、中文乱码


    常规方法:编码
    // base64转字符串
    getEncode64(str){
    // 对字符串进行编码
    var encode = encodeURI(str);
    // 对编码的字符串转化base64
    var base64 = btoa(encode);
    return base64;
    },
    解码:
    // base64转字符串
    getDecode(str){
    // 对base64转编码
    var decode = atob(base64);
    // 编码转字符串
    var str = decodeURI(decode);
    return str;
    },
    使用方法:
    let url = ‘http://百度.com’
    //转base64编码
    let base64Url = this.getEncode64(url);

    //解码 后台返回JSON格式所以加了JSON.parse进行json解码,正常对象格式就不用加
    let data =JSON.parse(this.getDecode(resp.data));
    console.log(data);
    问题:
    用上述的编码和解码,自己前端操作编译和解码中文都是没有问题的,但是由于需要后台,编码后传输到后台,后台返回编码格式再解码的时候就会出现中文乱码。

    原因:
    一番查找下来,可能是由于 常规的encode方法虽然界面上转的是utf-8,但是实际上传输存储的时候格式还是utf-16,后台返回的是utf-8格式,用decode界面实际上转的是utf-16,转utf-8会出现中文乱码。也就是说上述的编码和解码,适用于页面本身编码解码,不适合传输用。

    解决解码中文乱码:
    //字符串转base64
    getEncode64(str){
    return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g,
    function toSolidBytes(match, p1) {
    return String.fromCharCode(‘0x’ + p1);
    }));

    },
    getDecode(str){
    return decodeURIComponent(atob(str).split(‘’).map(function © {
    return ‘%’ + (‘00’ + c.charCodeAt(0).toString(16)).slice(-2);
    }).join(‘’));
    },
    用这两个编码和解码就正常了,encodeURIComponent是转utf-8

  • 相关阅读:
    快速抽取resnet_v2_152中间的特征层
    RabbitMQ之Queue(队列)属性解读
    闪存基本原理
    通过商品ID获取到京东商品详情页面数据,京东商品详情官方开放平台API接口,京东APP详情接口,可以拿到sku价格,销售价演示案例
    学会 Arthas,让你 3 年经验掌握 5 年功力
    Java学习笔记——接口
    李航老师《统计学习方法》第2章阅读笔记
    快排+归并非递归实现
    spring进阶学习记录
    【微服务38】分布式事务Seata源码解析六:全局/分支事务分布式ID如何生成?序列号超了怎么办?时钟回拨问题如何处理?
  • 原文地址:https://blog.csdn.net/weixin_44324124/article/details/125539515
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号