http传输字符编码与转义(深度好文)
来源:互联网 发布:家庭媒体中心软件 编辑:程序博客网 时间:2024/06/05 09:25
一、引言
最近陆陆续续看了好多关于字节、字符、字符编码、字符转义的文章,终于对这个过程有了比较清晰深刻的认识。和后台开发相结合知道了乱码出现的理论具体原因,和前台开发结合知道了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传输字符编码与转义(深度好文)
- http转义与url编码
- http与中文编码传输
- javascript字符编码、转义
- 转义字符编码 IOS
- http转义字符
- 关于http传输字符的编码和解码
- php post数据过程中的转义字符与urlencode编码
- 字符的编码、传输
- HTTP传输编码
- Http url特殊字符转义
- 元字符与转义(正则表达式)
- 特殊字符与转义
- 关于URL转义字符(URL编码)的问题
- 关于URL转义字符(URL编码)的问题
- 关于URL转义字符(URL编码)的问题
- 字符常量与转义字符
- 转义字符与特殊字符
- 【SSL证书】【知识体系】【WebSocket】【Spring Boot 2.x】【DevOps 转型】| Chat · 预告
- 微服务时代下崛起的 TestOps 工程师
- Python采集实例2
- OkHttpClient get请求
- 第一届&第二届“幻想杯”NOIP模拟赛 标程
- http传输字符编码与转义(深度好文)
- Brief talk for django test
- 读老罗的安卓之旅这本书的一些笔记及个人的理解
- 全自动脚本安装虚拟机
- NOIP复赛复习(四)读写外挂与高精度模板
- 跟我学习dubbo-ZooKeeper注册中心安装(2)
- 电子商务网站测试经验总结
- 欢迎使用CSDN-markdown编辑器
- IntelliJ IDEA 常用设置讲解