Base64开发者须知

Base64编码表

clipboard.png

URL和正则表达式中用到的Base64改进

Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的惟一标识符(通常为128-bit的UUID)编码为一个字符串,用做HTTP表单和HTTP GET URL中的参数。在其余应用程序中,也经常须要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不只比较简短,同时也具备不可读性,即所编码的数据不会被人用肉眼所直接看到。正则表达式

然而,标准的Base64并不适合直接放在URL里传输,由于URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还须要再进行转换,由于ANSI SQL中已将“%”号用做通配符。数据库

为解决此问题,可采用一种用于URL的改进Base64编码,它不只在末尾填充'='号,并将标准Base64中的“+”和“/”分别改为了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要做的转换,避免了编码信息长度在此过程当中的增长,并统一了数据库、表单等处对象标识符的格式。编程

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改为了“!”和“-”,由于“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中均可能具备特殊含义。编程语言

此外还有一些变种,它们将“+/”改成“_-”或“._”(用做编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。编码

相关文章
相关标签/搜索