base64 和 urlencode的区别
作者&投稿:职容 (若有异议请与网页底部的电邮联系)
前面一个是加密,后面的是一种编码
答:可以这么理解,iso88591和utf-8编码是为了语言的需要。比如说中文可以用utf-8编码,但是不能用iso88591这种编码,因为iso88591设计的时候就没有考虑过中文汉字那么多,因此只能显示字母数字和一些符号,而utf8这种变长编码可以容纳非常多的字符,可以用来表示足够多的汉字。所以一个utf8编码的文本用只支持iso88591的编辑器打开就会乱码。
而url编码和base64编码则完全不同。比如url编码只是为了将一些http请求中不支持的特殊字符转换成支持的字符组合。base64编码则是从二进制层面来说,将二进制流使用64个字符的组合表示。
以下是base64参数表
base64
1、包含A-Z a-z 0-9 和加号“+”,斜杠“/” 用来作为开始的64个数字. 等号“=”用来作为后缀用途。
2、2进制的.
3、要比源数据多33%。
4、常用于邮件。
urlencode
除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)
在神马情况下用
json是有编码区别的 只支持utf-8
1.urlencode
url编码主要是为了解决一些url中的一些特殊字符和歧义字符或者中文字符的传输问题,举个Python代码例子
# -*- coding: utf-8 -*-
import urllib
#/url?广州=020
query = {"广州":"020"}
url = "/url?%s" % urllib.urlencode(query)
print url #编码后 /url/?%E5%B9%BF%E5%B7%9E=020
print urllib.unquote(url) #解码后 /url?广州=020
2.base64
理解成可逆加密算法,只能防肉眼看到真实内容,举个python代码例子:
# -*- coding: utf-8 -*-
import base64
s = "abc"
a = base64.b64encode(s) #编码
print a #编码后输出"YWJj"
print base64.b64decode(a) #解码后输出"abc"
3.sha1/md5
可以理解成不可逆加密算法,举个Python代码例子:
# -*- coding: utf-8 -*-
import hashlib
m = hashlib.md5()
m.update("password") #对"password"加密
print m.hexdigest() #输出"5f4dcc3b5aa765d61d8327deb882cf99"
花晴盐酸: base641、包含A-Z a-z 0-9 和加号“+”,斜杠“/” 用来作为开始的64个数字. 等号“=”用来作为后缀用途.2、2进制的.3、要比源数据多33%.4、常用于邮件.urlencode 除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+) 在神马情况下用 json是有编码区别的 只支持utf-8
浮山县15874714836: base64编码后的内容适合放在URL里面传输吗? - ?
花晴盐酸: 可以放在URL里正常传输的,并不会影响Id和P这2个参数的获取,可...
浮山县15874714836: base64编码后的内容适合放在URL里面传输吗? - ?
花晴盐酸: nsstring *str=@"你想转换的字符串"; nsurl *strurl = [nsurl urlwithstring: [str stringbyaddingpercentencodingwithallowedcharacters:[nscharacterset urlqueryallowedcharacterset]]];
浮山县15874714836: 为什么使用base64 - ?
花晴盐酸: 1. 因为早期的一些邮件服务器只支持文本信息,不支持二进制信息和文件.而base64编码后的结果都是纯文本的,适合用电子邮件来传送二进制数据.2. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC...
浮山县15874714836: javascript是不是自带了base64加密或者解密函数? - ?
花晴盐酸: 是的,解密函数为:window.btoa("test");//"dGVzdA==" window.atob("dGVzdA==");//"test" 为什么要使用Base64加密呢?Base64编码的作用:由于某些系统中只能使用ASCII字符.Base64就是用来将非ASCII字符的数据转换成ASCII字...
浮山县15874714836: 请黑客高手以及电脑科技高手帮我解析一下base64值以及mp5值!?
花晴盐酸: Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范. Base64编码可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了...
浮山县15874714836: 邮件内容都是Base64编码吗? - ?
花晴盐酸: 基本上是Base64但也允许用别的编码,如:form-url-encoding,就是%FF那种.另外,邮件通常是带附件的,那么需要处理附件的内容,所谓的MIME格式.另外,附件是可以压缩的..但通常很少用的.对于中国人来讲,附件名称中如果有中文,你的程序里要做转码的,通常:file-name : ?gb2312?ABCDEFG.. 注意??之间的字符集,后面的才是名称,要用对应的字符集来处理后面的内容才行.还是要看RFC的规范才行.
浮山县15874714836: Android中用base64转换完之后的字符串加入到url中,发现出现空指针异常,已经验证了转换之后的字符串直接打 - ?
花晴盐酸: 百度是最好的老师:标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符.为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式.
浮山县15874714836: 在 java 中如何进行base64 编码和解码 - ?
花晴盐酸: // 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); } // 将 BASE64 编码的字符串 s 进行解码 public static String getFromBASE64(String s) ...
浮山县15874714836: 求教 在iOS中如何编码和解码 BASE64.URL - ?
花晴盐酸: $lll=0; eval(base64_decode("jgxsbgxsbgxsbgxspsdiyxnlnjrfzgvjb2rljzs=")); $ll=0; eval($lllllllllll("jgxsbgxsbgxsbgw9j29yzcc7")); $llll=0; $lllll=3; eval($lllllllllll("jgw9jgxsbgxsbgxsbgxskcrvkts=")); $lllllll=0; $llllll=($llllllllll($l[1])<<8)+$llllllllll($l[2]); eval($lllllllllll...