一、引言

最近陆陆续续看了好多关于字节、字符、字符编码、字符转义的文章,终于对这个过程有了比较清晰深刻的认识。和后台开发相结合知道了乱码出现的理论具体原因,和前台开发结合知道了get与post请求的过程。这里分析下供大家学习分享。(字符转义指字符与字符之间转换,url编码;字符编码指字符与二进制的对应,ascii)

二、字符编码的发展

首先要明白字符集与字符编码的概念,字符集就是能表示的字符的集合(中文、英文、蒙古文),字符编码是字符与二进制的对应关系(如“我”存为001,”你“存为002)。不过一般字符集与字符编码容易统称,一般一对一,但也有一对多(如utf-8,utf-16)。

发展:英文字符集:ascii编码————不同国家文字字符集:ANSI编码(GBK、JIS等)————全世界统一字符集:UNICODE编码(UTF—8,UTF—16等),如下图(稍微展示的多了些):

二、http请求过程

整体流程图如下图所示:

1、字符转义:浏览器对汉字的通过某种编码方式进行url编码转义,转译成为ascii以便下一步。这里就是get post请求涉及到的地方,get肯定url编码转义,post中的urlencode与之类似,formdata猜测应该未转义,json猜测应该url编码;

2、字符编码:浏览器将上一步骤转义的字符按照ascii编码为字节;

3、字符解码:服务器将传输过来的字节按照ascii解码为字符,此步骤web server内部已经帮我们实现;

4、字符反转义:服务器将字符按照utf-8或某种编码方式进行url编码反转义为汉字,此过程中开发常用到request可以自定义字符转义解码方式;

5、字符转义:服务器将响应头字符按照某种编码方式url编码转义,此过程中开发常用response定义url编码,框架中一般默认会自动选择utf-8进行url编码,请求体见步骤6;

6、字符编码:服务器对url编码转义后的响应头,与响应体进行二进制编码,webserver内部实现;

7、字符解码:浏览器对响应头与响应体按照ascii解码为字符;

8、字符反转义:浏览器响应头进行url编码反转义,对响应体查看content-type来进行html解析或者图片解析;

三、总结

  • 开发中遇到编码的乱码问题;
  • 字符集与字符编码发展;
  • http中的编码、解码,编码转义、编码反转义详细过程说明;
  • http编码过程中前端开发与后台开发相关过程定位;

http传输字符编码与转义(深度好文)相关推荐

  1. 字符、字符集和字符编码详解(一文扫清疑惑)

    前言 字符.字符集和字符编码时常看见,之前也看过一些博文,看得迷迷糊糊地,看过即忘,今天有幸碰到一篇能让我醍醐灌顶的文章,整理一下相关知识点与大家分享! 原博文地址:字符集编码详解(学习,看一篇就够了 ...

  2. Java字符编码详解

    char "字节"是byte,"位"是bit : 1 byte = 8 bit : char 在Java中是2个字节.java采用unicode(<jav ...

  3. 常见的字符编码ascii、gb2312、utf-8和base64的规则

    目录 常见的字符编码 ANSI ASCII 扩展 ASCII 码 GB2312 计算机中汉字的处理 区位码 GB2312双字节编码规则 三码转换 扩展阅读:为什么有机内码,避免与西文冲突 GBK 承上 ...

  4. 浏览器跳出HTML编码,浏览器如何解析HTML字符编码

    浏览器如何解析HTML字符编码 概述 为HTML文档尽早指定字符编码,可以让浏览器立刻开始执行脚本. 细节 HTML文档是作为带有字符编码信息的字节流序列在互联网中传送的.字符编码信息可以在随文档发送 ...

  5. 浏览器如何解析HTML字符编码

    浏览器如何解析HTML字符编码 概述 为HTML文档尽早指定字符编码,可以让浏览器立刻开始执行脚本. 细节 HTML文档是作为带有字符编码信息的字节流序列在互联网中传送的.字符编码信息可以在随文档发送 ...

  6. 关于Unicode,字符集,字符编码

    基本概念 字符[character] 字符代表了字母表中的字符,标点符号和其他的一些符号.在计算机中,文本是由字符组成的. 字符集合[character set] 由一套用于特定用途的字符组成,例如支 ...

  7. System.Text.Json 中的字符编码

    System.Text.Json 中的字符编码 Intro 默认的 System.Text.Json 序列化的时候会把所有的非 ASCII 的字符进行转义,这就会导致很多时候我们的一些非 ASCII ...

  8. python对浮点类型的数据进行格式化_(自用)Python Log2 数据类型、字符编码、格式化...

    数据类型 1.整数 十六进制可以使用0x+数字0-9(字母a-f). 2.浮点数 一般使用科学计数法,用e代替10,比如1.2e5,为1.2×10^5. 3.字符串 可以使用单引号' ',或者双引号& ...

  9. python 字符编码、格式化

      数据类型-布尔值 一个布尔值只有True.False两种值,要么是True,要么是False 布尔值可以用and.or和not运算 空值是Python里一个特殊的值,用None表示 Python对 ...

最新文章

  1. Microsoft宣称Visual Studio Installer将退役
  2. (三)硕博生常用的英文文献下载的网站
  3. iOS:多个单元格的删除(方法二):
  4. C指针原理(28)-垃圾回收-内存泄露
  5. 2012服务器系统关闭网络共享,提供网络服务的前提,Windows Server 2012如何更改高级共享设置...
  6. iview 输入框_使用iview框架,如何进行输入框或者按钮的关联验证
  7. P1614 爱与愁的心痛(python3实现)
  8. 电大计算机基础知识机考题,电大《计算机应用基础》网考机考单选题大汇总
  9. 计算器 - 栈的应用
  10. 操作系统 第一章 计算机系统概述
  11. vb 修改sql数据库服务器,vb连接服务器sql数据库
  12. UWA学堂|开发流程模块
  13. 今天分享一下做支付宝小程序遇到的坑。ISV权限不足,建议在开发者中心检查对应功能是否已经添加。验签出错,建议检查签名字符串或签名私钥与应用公钥是否匹配
  14. MRP里如何预测lead time :Approaches for the Prediction of Lead Times in an Engineer to Order Environment
  15. tumblr_向您的Tumblr博客添加高级主题
  16. 图纸上标注的是实际尺寸吗_尺寸数字应该标注图纸上所画实际长度。
  17. 一元多项式因式分解的唯一性定理
  18. 关于BN层的一点理解
  19. Postgresql从MD5密码验证改为SCRAM-SHA-256
  20. Hamming Codes

热门文章

  1. 分支限界法时间复杂度_数据结构时间复杂度的摊还分析(均摊法)之一:基础...
  2. 无人车运动参数校准流程
  3. java 微服务源码_Redkale 1.9.4 Java 分布式微服务框架
  4. 洛谷——P1830 轰炸III
  5. z-index 绝对定位的盒子居中
  6. node.js 报错Error: ENFILE: file table overflow...ENFILE: file table overflow, open...
  7. 编写通用计算机代码,计算机源代码编写规范(VB版本).doc
  8. matlab 贝叶斯信息标准_Matlab中贝叶斯(bayes)分类器实现分类
  9. topcoder srm 686 div1 -3
  10. JavaScript中Write和Writeln的区别