DataURI
1.DataURI协议允许文档编写者在文档中内嵌小文件
2.格式:data:[][;base64],
A.mediatype: 文件类型,可选
B.字符编码指的是后面数据当前编码类型可选:
C.<data>:是按照前面字符编码类型进行编码之后的数据
D.mediatype默认为text/plain,编码类型默认为charset=US-ASCII
3.Linux 和 Mac OSX 终端可以使用以下命令进行base64编码
uuencode -m infile remotename
- 比如在终端中执行 uuencode -m test demo,输出如下:其中
begin-base64 664 demo
YSBzbGlnaHRseSBsb25nZXIgdGVzdCBmb3IgdGV2ZXIK
====
4.Data URI 创建和使用时存在的问题
A.语法:
创建和使用的时候容易忘记数据部分前面需要使用逗号隔开
B.data URI 长度限制:
数据转换为base64编码之后可能会很长,某些浏览器限制URLs在65535个字符,限制URLs中的数据部分为65529字符
C.缺少错误处理机制:
格式里面如果参数无效,不会有提醒
D.没有支持查询字符串功能:
data URI 里面的数据如果包含查询字符串,查询字符串无法拥有作为查询字符串的功能,只是
表面上被呈现在dataURI的内容里面,也就是说如果数据包含有查询字符串格式的字符,那么并
不会被当成查询字符串,以下对带有HTML和查询字符串格式的数据进行dataURI编码后如下:
?arg=val只是被当成页面内容的一部分,而不是作为查询字符串
data:text/html,lots of text...<p><a name%3D"bottom">bottom</a>?arg=val
页面内容:
lots of text...<p><a name="bottom">bottom</a>?arg=val
5.JavaScript 进行base64编码和解码:
A.编码:
a.encodeURI: 用于没有?#功能性分割符的字符串base64编码,对整个URI进行的
b.encodeURIComponent:URLs中如果是含有?#就该使用此方法将需要编码的内容逐个分离进行
base64编码,然后再将各部分拼接成完整的URLs
B.解码:
a.decodeURI:返回整个统一资源占位符的非encodeURI形式
b.decodeURIComponent: 返回统一资源占位符的一部分非encodeURI形式
C.decodeURIComponent()和encodeURIComponent()方法解决了?#等特定功能分隔符无法实现
功能的问题