概述
开发Web项目的过程中,经常遇到浏览器中显示的内容乱码,或者服务器获取浏览器请求参数时乱码的问题,很多同学基本都是在遇到乱码的时候去网上一顿搜索,然后看哪篇文章比较靠谱就照着上面的内容去配后乱码成功消失了,然后就没然后了...
最后基本只是停留在知道怎么样设置能避免常见的乱码问题,而不知道具体的原理,一旦遇到了网上查不到的乱码场景就不知道如何解决了~
本文会深入的让你了解针对于HTTP请求时,这一去一回(Request,Response)之间,到底做了怎样的事情,让你彻底告别Web项目中的乱码烦恼。本文的内容是基于Tomcat 8.0.23版本的,其他容器也可以参考本文的内容,毕竟理论都是通的~
Request乱码
在Request过程中我们需要注意2个步骤,第一个是请求发送时所使用的编码,第二个是应用收到请求后解码时所用的编码,只有保证这两步中使用相同的编码即可有效防止乱码的发生。那么请求时使用的是什么编码呢?这个主要取决于请求时的客户端。
下面我们做个测试,客户端分别使用浏览器和curl来请求,服务端使用Tomcat 8.0.23来处理。
请求地址:http://localhost:8080/ccj/楚楚街?query=买的漂亮
我们先来分析下上面的地址: