关于汉字串的传输编码

我们经常会遇到前端与后端、后端与后端、前端与前端之间传递字符串参数,首先我们得保证接收端收到的信息能正确还原为发送端发送的信息,那么需要字符串编码以避免原始字符串包含的一些特殊符号在传输过程中因为各种原因被处理掉的风险。在http传输数据的方式中,可以通过body、header还有url里的params和query来传递数据,其实各种方式还都有一些保留字需要注意,不能在编码中出现。一般base64用于编码信息会比较理想。其实我对base64还是不太满意,如果有base62我会感觉更香的。汉字不能直接转base64,得先encodeURIComponent转一道,再通过atob转一道。如果是后端传汉字,那么是可以直接用Buffer转hex字符串,

const { Buffer } = require('node:buffer');
const buf = Buffer.from('你好 世界', 'utf8');
console.log(buf.toString('hex'));
//e4bda0e5a5bd20e4b896e7958c
let buf1=Buffer.from('e4bda0e5a5bd20e4b896e7958c', 'hex');
console.log(buf1.toString('utf8'));
//你好 世界

可惜前端不支持Buffer,那想个办法可以曲线救国一下。

var str = "你好 世界";
var val = "";
for(var i = 0; i < str.length; i++){
	val += "g" + str.charCodeAt(i).toString(16);
}
alert(val.substr(1));   
//4f60g597dg20g4e16g754c

var str = "4f60g597dg20g4e16g754c";
var val="";
var arr = str.split("g");
for(var i = 0; i < arr.length; i++){
  val += String.fromCharCode(parseInt(arr[i],16));
}
alert(val);    
//你好 世界

转换得到字符串里除了16个十六进制字符(0-9a-f)还多了一个字符g作为分隔符,其实这个的编码效率也不咋地,马马虎虎能用罢了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值