tomcat8 get 带中文参数就报400错误

a2048 2018-03-26 11:07:53
原来环境是在jdk1.6,tomcat6里能正常运行,现在换成jdk1.7,tomcat8.0后就会发生有get提交带中文参数就会就报400错误(Chrome无异常、IE报错)
Chrome浏览器可能是自带中文转义的缘故吧是能正常用,
现在把中文字符通过java.net.URLEncoder.encode(中文,"GBK")后就可以了,但项目里所以的都这样改就比较麻烦,所以看看大家有什么办法,通过什么配置处理一下就解决这个问题。
...全文
2056 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
幽饮烛 2018-03-27
  • 打赏
  • 举报
回复
引用 10 楼 a2048 的回复:
你的页面编码是 GBK 还是 UTF-8?
a2048 2018-03-26
  • 打赏
  • 举报
回复
引用 1 楼 xwn_2016 的回复:
server.xml里的编码改了么
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   useBodyEncodingForURI="true"
			   />
这试过不行。
  • 打赏
  • 举报
回复
加一个乱码过滤器试试过滤路径设置/*
xwn_2016 2018-03-26
  • 打赏
  • 举报
回复
server.xml里的编码改了么
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   useBodyEncodingForURI="true"
			   />
a2048 2018-03-26
  • 打赏
  • 举报
回复
引用 9 楼 zssazrael 的回复:
给个出错的 URL 看看。URL哪里生成的。
http://127.0.0.1:8080/Query/Query_A.jsp?id=2275&UserName=小黄 在ie里直接报400错误,Chrome浏览器运行正常。
幽饮烛 2018-03-26
  • 打赏
  • 举报
回复
给个出错的 URL 看看。URL哪里生成的。
kain_curd 2018-03-26
  • 打赏
  • 举报
回复
试试在web.xml中加入字符 过滤器 <filter> <filter-name>EncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>EncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 打赏
  • 举报
回复
Window的默认编码方式是GBK,Linux的是UTF-8,同样的 微软的IE也应该是GBK 不知道网页上加上 <meta charset=utf-8" /> 行不行
引用 5 楼 a2048 的回复:
[quote=引用 4 楼 zp809360394 的回复:] 设置这个的前提是 关掉apache的编码 AddDefaultCharset off [quote=引用 3 楼 a2048 的回复:] [quote=引用 1 楼 xwn_2016 的回复:] server.xml里的编码改了么
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   useBodyEncodingForURI="true"
			   />
这试过不行。[/quote][/quote] 我没有apache,只是tomcat8.0[/quote]
Sunyiban 2018-03-26
  • 打赏
  • 举报
回复
用Post请求~~
a2048 2018-03-26
  • 打赏
  • 举报
回复
引用 4 楼 zp809360394 的回复:
设置这个的前提是 关掉apache的编码 AddDefaultCharset off [quote=引用 3 楼 a2048 的回复:] [quote=引用 1 楼 xwn_2016 的回复:] server.xml里的编码改了么
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   useBodyEncodingForURI="true"
			   />
这试过不行。[/quote][/quote] 我没有apache,只是tomcat8.0
  • 打赏
  • 举报
回复
设置这个的前提是 关掉apache的编码 AddDefaultCharset off
引用 3 楼 a2048 的回复:
[quote=引用 1 楼 xwn_2016 的回复:] server.xml里的编码改了么
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
			   URIEncoding="UTF-8"
			   useBodyEncodingForURI="true"
			   />
这试过不行。[/quote]

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧