目录
-
ASCII
定义
所有的数据在存储和运算时都要使用二进制数表示, 一个标准ASCII码用一字节来表示,使用7位二进制数来表示所有大小写字母及常见符号,一共127个字符,余下一位在标准ASCII中用于奇偶校验位。
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符)
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符
在标准ASCII基础上还有扩展ASCII码,扩展的ASCII码将奇偶校验位用于确定附加的特殊符号
-
Base64编码
原理
基于64个字符的编码方式【A-Z,a-z,0-9,+,/】,通常以三个ASCII码(3x8 bit)为一组,然后将每一组转化为4个6bit的字节(4x6bit), 并在每个6 bit字节前填上两个高位0,形成4个8 bit 字节,将每个8 bit字节对照BASE64 编码表进行编码得到最后的Base64字节编码。
当被编码字符不是8bit,如中文字符时,不能采用base64 ;
当被编码字符长度不是3的倍数时,以0补齐到3的倍数,输出的Base64编码对应的输出字符为“=”,如当被编码字符余下一个时,最后输出字符有两个=;当被编码字符余下两个时,最后输出字符尾部有一个=。
应用
Base64编码可用于在HTTP环境下传递较长的标识信息,此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符
为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。
此外还有一些变种,它们将“+/”改为“-”或“.”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“:”(用于XML中的Name)
在python中可以通过标准库函数进行base64的编码和译码
import base64
test="Hello Python !"
test_encode=base64.encodebytes(test.encode('utf-8'))
print(test_encode)
test_decode=base64.decodebytes(test_encode)
print(test_decode)
-
URL编码
定义
url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。
URL编码遵循下列规则
每对name/value由&;符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。
任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =,&;,和 % 这些特殊的字符。
常用的URL编码对照表
ASCII Value | URL-encode | ASCII Value | URL-encode | ASCII Value | URL-encode |
æ | %00 | 0 | %30 | ` | %60 |
| %01 | 1 | %31 | a | %61 |
| %02 | 2 | %32 | b | %62 |
| %03 | 3 | %33 | c | %63 |
| %04 | 4 | %34 | d | %64 |
| %05 | 5 | %35 | e | %65 |
| %06 | 6 | %36 | f | %66 |
| %07 | 7 | %37 | g | %67 |
backspace | %08 | 8 | %38 | h | %68 |
tab | %09 | 9 | %39 | i | %69 |
linefeed | %0a | : | %3a | j | %6a |
| %0b | ; | %3b | k | %6b |
| %0c | < | %3c | l | %6c |
c return | %0d | = | %3d | m | %6d |
| %0e | > | %3e | n | %6e |
| %0f | ? | %3f | o | %6f |
| %10 | @ | %40 | p | %70 |
| %11 | A | %41 | q | %71 |
| %12 | B | %42 | r | %72 |
| %13 | C | %43 | s | %73 |
| %14 | D | %44 | t | %74 |
| %15 | E | %45 | u | %75 |
| %16 | F | %46 | v | %76 |
| %17 | G | %47 | w | %77 |
| %18 | H | %48 | x | %78 |
| %19 | I | %49 | y | %79 |
| %1a | J | %4a | z | %7a |
| %1b | K | %4b | { | %7b |
| %1c | L | %4c | | | %7c |
| %1d | M | %4d | } | %7d |
| %1e | N | %4e | ~ | %7e |
| %1f | O | %4f |
| %7f |
space | %20 | P | %50 | € | %80 |
! | %21 | Q | %51 |
| %81 |
" | %22 | R | %52 | ‚ | %82 |
# | %23 | S | %53 | ƒ | %83 |
$ | %24 | T | %54 | „ | %84 |
% | %25 | U | %55 | … | %85 |
& | %26 | V | %56 | † | %86 |
' | %27 | W | %57 | ‡ | %87 |
( | %28 | X | %58 | ˆ | %88 |
) | %29 | Y | %59 | ‰ | %89 |
* | %2a | Z | %5a | Š | %8a |
+ | %2b | [ | %5b | ‹ | %8b |
, | %2c | \ | %5c | Œ | %8c |
- | %2d | ] | %5d |
| %8d |
. | %2e | ^ | %5e | Ž | %8e |
/ | %2f | _ | %5f |
| %8f |