WEB中常用的编码与form表单

1.ASCII码

ASCII码是一种将英文字符映射到数字的编码方式。它规定了每个字符对应的唯一数字编码。ASCII码共有128个字符编码,包括大写字母、小写字母、数字、标点符号以及一些特殊字符。
例如,大写字母A的ASCII码值是65,小写字母a的ASCII码值是97,数字0的ASCII码值是48。通过将字符转换为对应的ASCII码值,可以方便地在计算机中进行字符的存储和处理。

Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr
 0    NUL   16    DLE   32    SP    48    0     64    @     80    P     96    `
 1    SOH   17    DC1   33    !     49    1     65    A     81    Q     97    a
 2    STX   18    DC2   34    "     50    2     66    B     82    R     98    b
 3    ETX   19    DC3   35    #     51    3     67    C     83    S     99    c
 4    EOT   20    DC4   36    $     52    4     68    D     84    T    100    d
 5    ENQ   21    NAK   37    %     53    5     69    E     85    U    101    e
 6    ACK   22    SYN   38    &     54    6     70    F     86    V    102    f
 7    BEL   23    ETB   39    '     55    7     71    G     87    W    103    g
 8    BS    24    CAN   40    (     56    8     72    H     88    X    104    h
 9    TAB   25    EM    41    )     57    9     73    I     89    Y    105    i
10    LF    26    SUB   42    *     58    :     74    J     90    Z    106    j
11    VT    27    ESC   43    +     59    ;     75    K     91    [    107    k
12    FF    28    FS    44    ,     60    <     76    L     92    \    108    l
13    CR    29    GS    45    -     61    =     77    M     93    ]    109    m
14    SO    30    RS    46    .     62    >     78    N     94    ^    110    n
15    SI    31    US    47    /     63    ?     79    O     95    _    111    o
 
Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr  Dec  Chr
 0    NUL   16    DLE   32    SP    48    0     64    @     80    P     96    `
 1    SOH   17    DC1   33    !     49    1     65    A     81    Q     97    a
 2    STX   18    DC2   34    "     50    2     66    B     82    R     98    b
 3    ETX   19    DC3   35    #     51    3     67    C     83    S     99    c
 4    EOT   20    DC4   36    $     52    4     68    D     84    T    100    d
 5    ENQ   21    NAK   37    %     53    5     69    E     85    U    101    e
 6    ACK   22    SYN   38    &     54    6     70    F     86    V    102    f
 7    BEL   23    ETB   39    '     55    7     71    G     87    W    103    g
 8    BS    24    CAN   40    (     56    8     72    H     88    X    104    h
 9    TAB   25    EM    41    )     57    9     73    I     89    Y    105    i
10    LF    26    SUB   42    *     58    :     74    J     90    Z    106    j
11    VT    27    ESC   43    +     59    ;     75    K     91    [    107    k
12    FF    28    FS    44    ,     60    <     76    L     92    \    108    l
13    CR    29    GS    45    -     61    =     77    M     93    ]    109    m
14    SO    30    RS    46    .     62    >     78    N     94    ^    110    n
15    SI    31    US    47    /     63    ?     79    O     95    _    111    o
 

常见ASCII码的大小规则:09<AZ<a~z。

1)数字比字母要小。如 “7”<“F”;

2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;

3)字母A比字母Z要小,并按A到Z顺序递增,如“A”<“Z” ;同理,字母a比字母z要小,“a”<“z”;

4)同个字母的大写字母比小写字母要小32。如“A”<“a” ;

几个常见字母的ASCII码大小: “0”为 48“、A”为65、“a”为97

2.urlcode编码

URL(Uniform Resource Locator,统一资源定位器、定位地址,俗称网页地址,简称网址),是因特网上标准的资源地址,如同在网络上的门牌。

协议(scheme)是浏览器请求服务器资源的方法,上例是https://的部分,表示使用 HTTPS 协议,常见的有http、https,还有ftp、file、mailto、data等。
主机(host)是资源所在的网站名或服务器的名字,又称为域名。
用户名、密码:这没什么好解释的,就是字面意思。
路径(path)是资源在网站的位置。比如,/path/index.html这个路径,指向网站的/path子目录下面的网页文件index.html
服务器地址:有的时候你在URL上看到的是域名,其实会通过DNS转为IP地址,所以还是服务器IP地址。
端口紧跟在域名后面,两者之间使用冒号分隔,比如www.example.com:80
资源层级文件路径:大部分会隐藏,就是服务器的目录路径,使用"/“区别每一层。
查询:使用”&"连接
片段ID:有的时候被称为“锚点”,一般是指CSS中的id,就是使用浏览器调试时看到的id属性,有时也可通过这个进行XSS或sql注入。

当 URL 路径或者查询参数中,带有中文或者特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符去表示那些不安全的字符。安全字符,指的是没有特殊用途或者特殊意义的字符。
URL 编码协议规定(RFC3986 协议):URL 中只允许使用 ASCII 字符集可以显示的字符,比如英文字母、数字、和- _ . ~ ! *这 6 个特殊字符。当在 URL 中使用不属于 ASCII 字符集的字符时,就要使用特殊的符号对该字符进行编码,比如空格需要用%20来表示。

URL字符
URL 的各个组成部分,只能使用以下这些字符。

  • 26个英语字母(包括大写和小写)

  • 10个阿拉伯数字

  • 连词号(-

  • 句点(.

  • 下划线(_
    绕过
    URL 字符转义的方法是,在这些字符的十六进制 ASCII 码前面加上百分号(%)。下面是这18个字符及其转义形式。

  • !:%21

  • #:%23

  • $:%24

  • &:%26

  • ':%27

  • (:%28

  • ):%29

  • *:%2A

  • +:%2B

  • ,:%2C

  • /:%2F

  • ::%3A

  • ;:%3B

  • =:%3D

  • ?:%3F

  • @:%40

  • [:%5B

  • ]:%5D

举例来说,汉字的 UTF-8 十六进制编码是e4b8ad,每两个字符一组,URL 转义后就为%e4%b8%ad。也就是说,URL 里面凡是有汉字的地方,都要写成%e4%b8%ad。(JavaScript协议不能被urlcode编码)

3.html实体编码

1.HTML 实体是一段以连字号 (&)开头、以分号 (;)结尾的文本 (字符串)。
2.实体常常用于显示保留字符 (这些字符会被解析为 HTML 代码)和不可见的字符 (如“不换行空格”)
3.应用场景:在前端,一般为了避免 XSS 攻击,会将 <> 编码为 < 与 >,这些就是 HTML 实体编码
4.使用须知:在 HTML 转义时,仅仅只需要对六个字符进行编码:&、<、>、"、’ 和 `。 我们可以使用 he 库进行编码及转义

下面的UTF-8是一种可变长的Unicode编码,解决了中文与英文字节不同导致的资源浪费的情况

<meta charset="UTF-8"> 

(1)不是每个 Unicode 字符都可以打印出来,有些没有可打印形式,比如换行符的码点是十进制的10(十六进制的A),就没有对应的字面形式。
(2)小于号(<)和大于号(>)用来定义 HTML 标签,其他需要用到这两个符号的场合,必须防止它们被解释成标签。
(3)由于 Unicode 字符太多,无法找到一种输入法,可以直接输入所有这些字符。换言之,没有一种键盘,有办法输入所有符号。
(4)网页不允许混合使用多种编码,如果使用 UTF-8 编码的同时,又想插入其他编码的字符,就会很困难。

HTML 为了解决上面这些问题,允许使用 Unicode 码点表示字符,浏览器会自动将码点转成对应的字符。

字符的码点表示法是&#N;(十进制,N代表码点)或者&#xN;(十六进制,N代表码点),比如,字符a可以写成&#97;(十进制)或者&#x61;(十六进制),字符可以写成&#20013;(十进制)或者&#x4e2d;(十六进制)

以下是一些字符的的实体表示方法

  • <&lt;
  • >&gt;
  • "&quot;
  • '&apos;
  • &&amp;
  • ©&copy;
  • #&num;
  • §&sect;
  • ¥&yen;
  • $&dollar;
  • £&pound;
  • ¢&cent;
  • %&percnt;
  • *$ast;
  • @&commat;
  • ^&Hat;
  • ±&plusmn;
  • 空格:&nbsp;

4.form表单

<form>标签用来定义一个表单,所有表单内容放到这个容器元素之中。常用来提交账号信息

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <form action="javascript:alert(1)" method="post">
        <label for="">用户名:</label><input type="text" name="username" id="">
        <label for="">密码:</label><input type="password" name="password" id="">
        <input type="submit" value="submit">
    </form>
    
</body>
</html>

上面代码就是一个表单。
<input>标签是一个行内元素,用来接收用户的输入。它是一个单独使用的标签,没有结束标志。它有多种类型,取决于type属性的值,默认值是text,表示一个输入框。
type="text"是普通的文本输入框,用来输入单行文本。如果用户输入换行符,换行符会自动从输入中删除。
type="submit"是表单的提交按钮。用户点击这个按钮,就会把表单提交给服务器。

<form>有以下属性。

  • accept-charset:服务器接受的字符编码列表,使用空格分隔,默认与网页编码相同。
  • action:服务器接收数据的 URL。
  • autocomplete:如果用户没有填写某个控件,浏览器是否可以自动填写该值。它的可能取值分别为off(不自动填写)和on(自动填写)。
  • method:提交数据的 HTTP 方法,可能的值有post(表单数据作为 HTTP 数据体发送),get(表单数据作为 URL 的查询字符串发送),dialog(表单位于<dialog>内部使用)。
  • enctype:当method属性等于post时,该属性指定提交给服务器的 MIME 类型。可能的值为application/x-www-form-urlencoded(默认值),multipart/form-data(文件上传的情况),text/plain
  • name:表单的名称,应该在网页中是唯一的。注意,如果一个控件没有设置name属性,那么这个控件的值就不会作为键值对,向服务器发送。
  • novalidate:布尔属性,表单提交时是否取消验证。
  • target:在哪个窗口展示服务器返回的数据,可能的值有_self(当前窗口),_blank(新建窗口),_parent(父窗口),_top(顶层窗口),<iframe>标签的name属性(即表单返回结果展示在<iframe>窗口)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值