GET请求参数为中文时乱码分析

原文连接: www.cnblogs.com/zourong/p/5…html

问题描述

近期作任务时,跟后端联调时遇到一个问题,前端发送get请求,当参数值有中文时,请求失败,请求参数变为乱码。(ps:通常当参数有中文时,不多使用get请求,而是使用post请求来传输数据,请求数据放在消息主体里,服务端根据请求头里的content-type里定义的编码格式解码数据)前端

后端起本地环境,接口能够跑通,数据能够获取到。可是在我本身电脑上,一样的接口所有返回为空。在debug模式下调试代码发现,发现后端拿到的参数值所有是乱码,那确定就没有返回值了。这个时候就纳闷了,一样的代码为啥在不一样的环境下会出现这个问题?这时很容易想到就是编码问题。后端

缘由

咱们知道get请求,参数通过编码后会加到请求的url后,get请求通过tomcat处理。这时能想到多是tomcat编码的问题,查看咱们两我的本地的tomcat配置文件,果真不同,后端的tomcat配置文件加上了URIEncoding="UTF-8" ,可以让Tomcat(默认ISO-8859-1编码)以UTF-8的编码处理get请求,此时能正常解析参数中的中文。tomcat

解决办法

第一种:修改tomcat下的conf/server.xml文件,找到以下代码:bash

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
复制代码

加上URIEncoding="UTF-8"post

第二种:get请求修改成post请求。编码

相关文章
相关标签/搜索