java get方式中文乱码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java get方式中文乱码相关的知识,希望对你有一定的参考价值。
直接在浏览器地址上输入中文,传进后台中文就是??? ,试过很多办法了, 都不行,求助高手!
get方式提交的参数编码,只支持iso8859-1编码。因此,如果里面有中文。
在后台就需要转换编码,如下
String zhongwen = request.getParameter("zhongwen");
zhongwen = new String(zhongwen.getBytes("iso8859-1"),"GBK");
前提是你页面编码就是GBK,如果是utf-8,那上面那句代码后面就改成utf-8 参考技术A 1.页面显示中文乱码
<%page pageEncoding="utf-8"%>
2.传递中文参数乱码
修改server.xml
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/> 参考技术B 楼上那个回答好搞笑,明明是JSP参数乱码问题,你怎么扯到中文域名去了? 中文域名怎么了? 人家都出中文域名了,难道你输入中文域名还访问不了网站? 中文域名还不是映射到IP地址,和中文参数一点关系没得,你直接在URL上输入中文,转个码就是了、 参考技术C var str = escape("中文");
将得到一些"%20%2"这样的字符串, 后台会认识的. 参考技术D String zhongwen = request.getParameter("zhongwen");
zhongwen = new String(zhongwen.getBytes("iso8859-1"),"GBK");
java中get请求的中文乱码问题
表单采用Get方式提交,解决乱码的方法为:
方式一:手动解码
param = new String(param.getBytes("iso8859-1"), "utf-8");
此方式,依赖于服务器
方式二:配置tomcat
修改tomcat的server.xml: URIEncoding="utf-8"
此方式,依赖于服务器
方式三:url编码(不依赖Tomcat的配置,推荐):
浏览器中两次URL编码。
var param = "中";
param = encodeURI(param);
alert(param);
param = encodeURI(param);
alert(param);
讲param编码两次之后传递到后台
服务器中自己再做一次URL解码。
参数传递到服务器时候,服务器会对参数自动的做一次解码,我们只需要自己手动解码一次
java.net.URLDecoder.decode(param, "utf-8");
java.net.URLDecoder.decode(param, "utf-8"); //url解码
java.net.URLEncoder.encode(param, "utf-8"); //url编码
以上是关于java get方式中文乱码的主要内容,如果未能解决你的问题,请参考以下文章