您的位置:首页 > 其它

遇到的一个关于base64编码的小问题

2017-04-02 23:18 190 查看
前两天在写一个小的web service工具,遇到了一个问题。

当时在用node.js,想要调用python的一个服务,python的service是用了grpc,看了一下文档,node.js是支持grpc的,但是样例只给了同语言的调用,不知道node.js能不能调python。

后来仔细一想,这东西如果不能调,写个protobuf的意义就不大了,所以果断写一发。结果写完了发现个很蛋疼的问题,用js穿了个字符串给python,但是python那边拿到的字符串乱码了,而且怎么看都不像是一个正常的编码。

研究了半天也搞不定,后来实在没办法,写了一个node.js的server,看看js互相调用是否有问题,结果发现还是乱码,但js的乱码和python不一样,后来发现,拿到的字符串用base64解码就可以用了。但这对于python那边的状况还是无法解释,经同事的提醒,发字符串的时候,用base64编码一下就可以了。

这让我很疑惑,为什么base64编码就行了?查了一下,base64主要是为了将不可见字符转换成可见字符,据说由于历史原因,传输信道只支持ASCII字符,如果有非ASCII字符,就容易出现各种奇怪的问题。base64的原理也很简单,就是把3个8位bit转化为4个6位bit保存,每个6位bit高位补零,这样增加了信息的体积,也减小了字符的范围。这东西还是挺有用的, 学习了,不过我发的串里并没有非ASCII字符啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: