form表单与字符编码详解

html字符编码

UTF-8编码,可变长编码,字符数字表示通过Ascll码或者Unicode码来表示字符。

hex---十六进制

bin---二进制

oct---八进制

编码工具(https://gchq.github.io/CyberChef/)

标签本身不能编码

数字表示法的不方便之处,在于必须知道每个字符的码点,很难记忆。为了能够快速输入,HTML 为一些特殊字符,规定了容易记忆的名字,允许通过名字来表示它们,这称为实体表示法(entity)。

实体的写法是&name;,其中的name是字符的名字。下面是其中一些特殊字符,及其对应的实体。

  • <&lt; ---常用

  • >&gt; ---常用

  • "&quot;

  • '&apos;

  • &&amp;

  • ©&copy;

  • #&num;

  • §&sect;

  • ¥&yen;

  • $&dollar;

  • £&pound;

  • ¢&cent;

  • %&percnt;

  • *$ast;

  • @&commat;

  • ^&Hat;

  • ±&plusmn;

  • 空格:&nbsp;---常用

注意,上面最后一个特殊字符是空格,它也有对应的实体表示法。

字符的数字表示法和实体表示法,都可以表示正常情况无法输入的字符,逃脱了浏览器的限制,所以英语里面称为“escape”,中文翻译为“字符的转义”。

form表单

表单是由窗体和控件组成的,一个表单一般应该包含用户填 写信息的输入框,提交按钮等,这些输入框,按钮叫做控件,表单很像容器,它能够容纳各种各样的控件。

标签样式

< form action="url" method=get|post name=“myform” >< /form >
  • name:表单提交时的名称

  • action:提交到的地址

  • method:提交方式,默认为get

表单格式构成

  • 表单标签:指form标签本身,他是一个包含表单元素的区域

  • 表单域:是form标签中用来收集用户输入的每一项,通常用input标签来定义,input标签有不同的类型,用以对用用户不同的数据

  • 表单按钮:用于提交form表单中所有信息到服务

form表单属性:

  • accept-charset:该属性规定服务器使用哪种字符来处理表单数据

    <form accept-charset="value" >
  • action:必须的action属性规定当提交表单时,向何处发送表单数据

    <form action="value">
  • autocomplete:该属性规定表单是否应该启用自动完成功能。自动完成功能允许浏览器预测对字段的输入,当用户再字段开始输入时,浏览器基于之前输入过的值,应该显示处字段填写的选项

    <form autocomplete="on|off">
  • enctype:该属性规定在将表单数据发送到服务器之前如何对其进行编码。(只有 method=“post” 时才使用 enctype 属性。)

    <form enctype="value"> 

    method:该属性规定如何发送表单数据(表单数据会被发送到在 action 属性中规定的页面中)。

    表单数据可被作为 URL 变量的形式来发送(method=“get”)或者作为 HTTP post 事务的形式来发送(method=“post”)。

    • get:

      1,将表单数据以名称/值对的形式附加到 URL 中, URL 的长度是有限的(大约 3000 字符) 2,绝不要使用 GET 来发送敏感数据!(在 URL 中是可见的) 3,对于用户希望加入书签的表单提交很有用 4,get更适用于非安全数据

    • post:

      1,将表单数据附加到 HTTP 请求的 body 内(数据不显示在 URL 中) 2,没有长度限制 3,通过 POST 提交的表单不能加入书签

    <form method="get|post"> 
  • name:该属性规定表单的名称。name 属性用于在 JavaScript 中引用元素,或者在表单提交之后引用表单数据。

    <form name="text">
  • target:该属性规定一个名称或一个关键词,指示在何处打开 action URL,即在何处显示提交表单后接收到的响应。target 属性定义浏览器上下文(比如选项卡、窗口或内联框架)的名称或关键词。

    <form target="_blank|_self|_parent|_top|framename">
字符编码

任何一个文字或符号都是一个字符,但所占的字节不一定相同。除了常见的字母汉字还有特殊字符例如货币字符¥等。

字符的集合被称为字符集

字符编码:定义字符集中的字符如何编码为特定的二进制数。字符集和字符编码一般一一对应,GBK 字符集对应 GBK 编码,ASCii 字符集对应 ASCii 编码,但 Unicode 字符集有 UTF-8、UTF-16 和 UTF-32 三种编码方式。

Unicode:Unicode几乎编码定义了世界上几乎所有的字符。

码点/码位:码点是编码中为某个字符设定的数值,具有唯一性和一一对应性。码点只定义了一个字符对应的数值,没有定义这个数值是怎么存储的,这个由具体的编码方式决定。

U+XXXXXX 是码点的表示形式,X 代表一个十六进制数字,u 后面可以有4-6位,不足4位往前补0,所以码点的取值范围为 U+0000 ~ U+10FFFF,但实际 unicode 至今才扩展到二进制21位,而且21位代表的1114112个码点中并不是都代表着一个字符,只有大约10%的空间被使用。

码元:码点经过映射后得到的二进制串的转换格式单位称为码元,码点就是一串二进制数,码元就是切分这个二进制数的方法。

编码方案

  • Unicode:Unicode 只是给每个字符分配了个码点,但是码点转换为二进制存储时可能占1-4个字节,产生了定界问题:如何确定用几个字节表示一个字符。不同的解决方法对应不同的编码方案。

  • UTF-8:用1~4 byte 编码 Unicode 字符

    Unicode范围UTF-8编码方式
    U+0000 ~ U+007F0xxxxxxx
    U+0080 ~ U+07FF110xxxxx 10xxxxxx
    U+0800 ~ U+FFFF1110xxxx 10xxxxxx 10xxxxxx
    U+010000 ~ U+10FFFF11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

将 unicode 码点转换为二进制后,按照对应的范围从后往前截取出表中空出来的位数,依次从后往前填充进去,空的位数填0,就得到在内存中存储的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值