GET请求参数为中文时乱码分析
2024-08-25 08:46:42
问题描述
近期做任务时,跟后端联调时遇到一个问题,前端发送get请求,当参数值有中文时,请求失败,请求参数变为乱码。(ps:一般当参数有中文时,很少使用get请求,而是使用post请求来传输数据,请求数据放在消息主体里,服务端根据请求头里的content-type里定义的编码格式解码数据)
后端起本地环境,接口可以跑通,数据可以获取到。但是在我自己电脑上,同样的接口全部返回为空。在debug模式下调试代码发现,发现后端拿到的参数值全部是乱码,那肯定就没有返回值了。这个时候就纳闷了,同样的代码为啥在不同的环境下会出现这个问题?这时很容易想到就是编码问题。
原因
我们知道get请求,参数经过编码后会加到请求的url后,get请求经过tomcat处理。这时能想到可能是tomcat编码的问题,查看我们两个人本地的tomcat配置文件,果然不一样,后端的tomcat配置文件加上了URIEncoding="UTF-8" ,可让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求,此时能正常解析参数中的中文。
解决办法
1. 修改tomcat下的conf/server.xml文件,找到如下代码:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
加上URIEncoding="UTF-8"
2. get请求修改为post请求。
最新文章
- MahApps.Metro打造拉风的桌面应用程序
- python读取文件夹
- C# ASP.NET 优化程序性能、降低内存使用、提高程序运行速度
- CentOS上安装spark standalone mode(转载)
- Ubuntu backlight
- python django 与数据库的交互
- Codeforeces 707B Bakery(BFS)
- 简易自定义下拉菜单 与简易默认下拉html片段
- OpenCV安装要点
- subclipse svn 在64位win7下报Failed to load JavaHL Library
- 更改linux系统时间
- 关于C++的疑问剖析
- 高仿拉手网底部菜单实现FragmentActivity+Fragment+RadioGroup
- 【转载】深入浅出http请求
- JarSearch
- HDU - 3966 Aragorn&#39;s Story(树链剖分入门+线段树)
- ceil和floor函数的编程实践
- 搜索引擎选择: Elasticsearch与Solr(转)
- ASP.NET MVC 常用路由总结
- Echarts 柱状图属性详解