html <form id="userForm1" enctype="application/x-www-form-urlencoded" method="get" action="http://localhost/pc/enc/t1"> 输入 2+2 2 2 浏览器: http://localhost/pc/enc/t1?name=2%2B2&nick=2+2&pass= 后台 入参 : [Request(GET //localhost:3070/pc/enc/t1?name=2%2B2&nick=2+2&pass=)@298a8a52] request获取: - -------------name:2+2---------------------------- - -------------nick:2 2----------------------------
html:html
<form id="userForm2" enctype="application/x-www-form-urlencoded" method="post" action="http://localhost/pc/enc/t2">
输入:
2+2 2 2
浏览器:
http://localhost:3070/pc/enc/t2
后台:
入参 : [Request(POST //localhost:3070/pc/enc/t2)@edf57b2]
- -------------name:2+2----------------------------
- -------------nick:2 2----------------------------前端
总结:在form表单中编码格式application/x-www-form-urlencoded的时候 get提交 好比参数name=2+2 -》 浏览器会变成name=2%2B2 -》 后台接口获取参数的时候根据编码规则会正常显示2+2
form表单中编码格式application/x-www-form-urlencoded
简而言之(application/x-www-form-urlencoded):
2+2 -》2%2B2 -》 2+22 2 -》2+2 -》 2 2以上描述的就是 从浏览器用户填写提交到浏览器跳转到后台 整个一个闭环结束了,是一个完整的步骤。而有些状况下咱们看到这样的描述 空格变+号 +号变空格 这个又是怎么回事呢?我遇到的状况是这样的:1.先说+号变空格 好比:你在浏览器输入 localhost/pc/name=2+2 你会发现你在后台取的时候变成了2 2 其实这个状况和以前是一个的,只是你没有造成我说的一个完整的闭环,若是你想要后台获得的值是2+2,应该怎么作呢?参考前面的简而言之会发现。 咱们应该把浏览器的url变成 localhost/pc/name=2%2B2 这样的话后台取到的就么有问题了,这个加号应用好比token参数中包含+号,那么这个+号是有连接先后字符串的意义的,那么就须要用URLEncoder如下,固然你能够后台编码,也能够前端编码,这个编码应该是base64,能够先百度看下base64 里面能够还有一些坑 好比先后端编码可能用的工具类实现的细节不一致致使回车符换行符的问题。基础很重要。