我们经常会遇到所谓的URL编码(也叫百分号编码)和Base64编码。

      先说一下Bsae64编码。BASE64编码是一种常用的将二进制数据转换为64个可打印字符的编码,常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。例如邮件系统的MIME协议等。这个协议的用途,是确保接收方在只能识别可见文本字符的情况下,能够接受和识别二进制数据。编码后数据长度大约为原长的135.1%。
      Base64编码是一种一对一的映射编码,其编码长度始终是3的倍数,不足3位,用=填充。所以,如果你看到一大堆乱七八糟的数据后面是=结尾的,大部分时候可以判定是Base64编码。由于Base64是映射编码,所以如果人为改变它的映射表,就可以作为一种简单的数据加密手段了。

      再说一下URL编码,这个编码通常用在网页地址(URL)的传递中,在URL解释中,部分字符例如/ +等,有着特定的意义,因此不能直接使用Base64编码来传输地址文本。这个编码也适用于统一资源标志符(URI)的编码。URI所允许的字符分作保留与未保留。保留字符是那些具有特殊含义的字符. 例如, 斜线字符用于URL (或者更一般的, URI)不同部分的分界符,未保留字符没有这些特殊含义。 URL编码把保留字符表示为%开头的特殊字符序列,所以又叫做百分号编码。
      2005年1月发布的RFC 3986,强制所有新的URI必须对未保留字符不加以百分号编码;其它字符要先转换为UTF-8字节序列, 然后对其字节值使用百分号编码。但是在目前的实际应用中,一个URL地址在做百分号编码之前,其未保留的字符序列不一定采用的是UTF-8编码,也有可能是ANSI编码。此外,部分早期的系统将空格编码成+,而不是标准推荐的%20,这是我们在实际应用中应该注意的事项。

URL编码和Base64编码 (转)的更多相关文章

  1. URL安全的Base64编码

    Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...

  2. 编码之Base64编码

    Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法.目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一. 为什么会有 Base64 编码呢?因为有些网 ...

  3. Unicode字符集,utf8编码,base64编码简单了解

    Unicode字符集,utf8编码,base64编码简单了解 Unicode字符集,ASCII,GB2312编码集合等,类似于不同的字典,不同的字符的编码,类似于字典中的字在哪一个页哪一排. 当不同系 ...

  4. URL安全的Base64编码,解码

    Base64 可以将二进制转码成可见字符方便进行http传输,但是base64转码时会生成“+”,“/”,“=”这些被URL进行转码的特殊字符,导致两方面数据不一致. 我们可以在发送前将“+”,“/” ...

  5. 【编码】Base64编码

    简述 为什么叫Base64?个人理解是,基础的64个字符. 而它的作用?用基础的(可理解为可安全传输的)64个字符,来表示难以表示的二进制或对程序造成干扰的字符. Base64的编码过程 自行编码分析 ...

  6. C#中图片转换为Base64编码,Base64编码转换为图片

    #region 图片转为base64编码的字符串 public string ImgToBase64String(string Imagefilename) { try { Bitmap bmp = ...

  7. [编码解码] Base64 编码换行和+号遍空格的处理

    Android自身带有Base64加密与解密的包,可以方便地加密密码方便传输. String base64Token = Base64.encodeToString(token.trim().getB ...

  8. url、base64 编码规则

    UrlEncode 相关: URI所允许的字符分作保留与未保留. 保留字符是那些具有特殊含义的字符. 例如, 斜线字符用于URL (或者更一般的, URI)不同部分的分界符. 未保留字符没有这些特殊含 ...

  9. 获取图片base64编码的几种方法

    前文中我们聊了 Data URI 和 base64编码,稍微回顾下.base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,ba ...

随机推荐

  1. 读取MySQL存储二进制的语音、图片(Blob类型)

    /**   * 下载语音   * Remarks:   * @throws Exception   */ public void downloadYuyin() throws Exception { ...

  2. php文件上传原理详解(含源码)

    1.文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 2.客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-da ...

  3. Scala学习笔记(一)

    scala 版HelloWorrld object HelloWorld{ def main(args:Array[String]){ println("Hello World!!!&quo ...

  4. MSIL实用指南-局部变量的声明、保存和加载

    这一篇讲解方法内的局部变量是怎么声明.怎样保存.怎样加载的. 声明局部变量声明用ILGenerator的DeclareLocal方法,参数是局部变量的数据类型,得到一个局部变量对应的创建类LocalB ...

  5. 通过IF({1,0}和VLOOKUP函数实现Excel的双条件多条件查找的方法

    在Excel中,通过VLOOKUP函数可以查找到数据并返回数据.不仅能跨表查找,同时,更能跨工作薄查找. 但是,VLOOKUP函数一般情况下,只能实现单条件查找. 如果想通过VLOOKUP函数来实现双 ...

  6. 面向对象写的简单的colors rain

      <!DOCTYPE html>   <html>   <head>   <meta charset="UTF-8">   < ...

  7. 微信扫一扫JSSDK 扫一扫报错 invalid signature 问题

    交代一下业务场景 在在四个页面都需要用到扫一扫去扫二维码.然而在图三-我的订单 下单中这个页面扫一扫不起效,当时就郁闷了为啥其他页面有用,这里却没用,开始调试吧. 报错信息是签名验证不成功. 自己去打 ...

  8. Eclipse安卓开发环境搭建

    前提,Java SDK和Eclipse搭建完毕 下载android SDK并安装 (官网:http://sdk.android-studio.org/ ) 找到安装目录,运行“SDK Manager. ...

  9. c++编码及读写文件

    写文件 #include <fstream> #include <iostream> using namespace std; int main() { ofstream ou ...

  10. from提交表单后 数据提交到后台 但不跳转页面 可用iframe

    可以页面事先加载被隐藏的iframe标签,或者等到需要的时候通过js生成,再提交,提交之前,form的target指向iframe(我是要实现新页面生成的时候程半透明状态,所以用了后者的方法) 代码如 ...