Base64中文乱码解决方法
1.什么是base64编码
由于一些网络通讯协议的限制,你必须使用 window.btoa() 方法对原数据进行编码后,才能进行发送。接收方使用相当于 window.atob() 的方法对接受到的 base64 数据进行解码,得到原数据。
例如,发送某些含有 ASCII 码表中 0 到 31 之间的控制字符的数据。
然而,window.btoa 与 window.atob 不支持中文,对于 unicode 编码的字符进行 base64 编码之后,通过浏览器原生的 btoa 方法界面中文会乱码。
2.JS中的base64的中文乱码解决方法
首先引入两个方法:utf16to8、utf8to16
function utf16to8(str) {var out, i, len, c;out = "";len = str.length;for(i = 0; i < len; i++) {c = str.charCodeAt(i);if ((c >= 0x0001) && (c <= 0x007F)) {out += str.charAt(i);} else if (c > 0x07FF) {out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));} else {out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));}}return out;}function utf8to16(str) {var out, i, len, c;var char2, char3;out = "";len = str.length;i = 0;while(i < len) {c = str.charCodeAt(i++);switch(c >> 4) {case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:// 0xxxxxxxout += str.charAt(i-1);break;case 12: case 13:// 110x xxxx 10xx xxxxchar2 = str.charCodeAt(i++);out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));break;case 14:// 1110 xxxx 10xx xxxx 10xx xxxxchar2 = str.charCodeAt(i++);char3 = str.charCodeAt(i++);out += String.fromCharCode(((c & 0x0F) << 12) |((char2 & 0x3F) << 6) |((char3 & 0x3F) << 0));break;}}return out;}
编码
var original = "hello world" ;
var cipher = utf8to16(atob(original)) ;
解码
var original = btoa(utf16to8(cipher)) ;
3.JAVA中的中文乱码解决方法
编码
String original = "hello world" ;
String cipher = new String(Base64.encode(original .getBytes(StringUtil.__UTF8))) ;
解码
String original = new String(Base64.decode(cipher .getBytes()), StringUtil.__UTF8) ;
Base64中文乱码解决方法相关推荐
- java ios乱码_iOS发送邮件及其中文乱码解决方法
引 要我说呀,你如果不曾碰到奇奇怪怪的需求都不好意思说你是个程序猿.最近我碰到了,所以才有这篇文章,记录一下过程中遇到的问题. 这篇文章是记录一下我是如何在iOS端实现自动发送邮件功能的.某个应用场景 ...
- vs code中文乱码解决方法
修改 1.(安装方法) 2.显示终端输入数据输出结果(完美解决) 3.修改部分:中文乱码解决方法 第一步: 第二步: 1.(安装方法) 转载于: https:blog.csdn.net/qq_4304 ...
- Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法
Ubuntu10.04下gFtp2.0.19 远程客户端中文乱码解决方法如下: 1.打开"gFTP-FTP-属性-常规-远程字符集": 2.将远程字符集设置为:gb2312,gbk ...
- python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色)
python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) 参考文章: (1)python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) (2)https://www.cnblog ...
- Sublime Text 3中文乱码解决方法以及安装包管理器方法
Sublime Text 3中文乱码解决方法以及安装包管理器方法 参考文章: (1)Sublime Text 3中文乱码解决方法以及安装包管理器方法 (2)https://www.cnblogs.co ...
- axios请求GBK页面中文乱码解决方法
axios请求GBK页面中文乱码解决方法 参考文章: (1)axios请求GBK页面中文乱码解决方法 (2)https://www.cnblogs.com/bjhl/articles/10514038 ...
- charles抓包工具的中文乱码解决方法
charles抓包工具的中文乱码解决方法 参考文章: (1)charles抓包工具的中文乱码解决方法 (2)https://www.cnblogs.com/grimm/p/7494688.html 备 ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍 参考文章: (1)jquery的ajax()函数传值中文乱码解决方法介绍 (2)https://www.cnblogs.com/xuxiaosh ...
- python打包出现乱码_python解压zip包中文乱码解决方法
乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...
最新文章
- php 手机唯一标示_Php获取移动设备唯一标识
- sybase 事务插入时不可查询_InnoDB事务与锁
- CURL HTTPS POST
- Spring Boot 2.0 正式发布
- 队列处理高并发_高并发场景下缓存处理的一些思路
- git安装 perl ubuntu_ubuntu下安装git
- mybatis 级联查询兑现_MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)...
- fitnesse - 安装部署
- ddbs mysql_ddbs简介
- 180112 打字效果
- RabbitMQ的六种工作模式(三)
- android 歌词同步 换行,AS3歌词同步详解
- 【Java基础知识 8】String、StringBuilder、StringBuffer详解
- Telco Customer Churn(电信客户流失相关数据集)
- 凡科服务器物理位置,建设网站教程
- 爬取京东收件地址下得所有数据
- WLC5508 HA ( AP SSO)
- PayPal信用卡付款401,商家不接受使用此付款类型
- VB 变量的声明及作用域
- [SQL]行转列和列转行