JAVA怎样解决地址栏传中文乱码的问题? 我是在页面用<a>标签跳转,href="login.do?typeid=表格维护",在action中得到后再传到页面时就是乱码,我加了过滤器,页面也加了pageEncoding="UTF-8",可是没用,还是乱码,请教大家怎样解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那么你在action中得到的时候是不是乱码?你先确认下 再详细点,把jsp代码和后台程序代码都用回复栏上加代码方法帖上来,标明哪个地方出现乱码,太模糊,没办法解决 tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了. tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了. 在action中打印就是乱码了页面代码是这样的<a href="login.do?typeid=表格维护">表格维护</a>action中就用getparameter得到,然后再setAttribe传到页面,该设的全设了,就是不能解决 这个要比较两个的区别之处了,最主要的我想,应该是直接启动时是由eclipse项目导出的,是不是漏掉什么文件没打包之类的,或者eclipse下用的resin和你直接启动的是不是同一个服务器,用的配置是不是一样等等 你用getparameter得到后用getByte("gb2312") 转一次 在转成String 再传 要么就是按照9楼说的,在action中再转码为GB2312一次 得到中文转码,typeid="表格维护";typeid=URLEncoder.encode(typeid,"UTF-8");href="login.do?typeid=<%=typeid%>", 然后在接收的jsp里加上String typeid= URLDecoder.decode(request.request.getParameter("typeid"),"UTF-8"); 页面得加上 <%@page contentType="text/html; charset=UTF-8"%>lz加了没呢? 首先澄清一点的是,在URL中传递参数的话,设置过滤器也没用.在URL中传递参数,是通过HTTP报头来传递的.并不是类似于通过表单来传递,表单中传递的参数是在HTTP中的BODY中传送的.而设置字符过滤器只能起到过滤HTTP中BODY中的参数.而TOMCAT默认是ISO8859-1的编码方式,所以你在URL中传递过去后就是乱码了.而且过滤器也不管用了.解决方法.直接改变TOMCAT的默认字符编码方式:tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码 需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/> 中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了. 才是正解结贴把!!! 谢谢大家,解决了,是在tomcat中加上了那句话. URIEncoding="UTF-8只是针对form表单提交的 URL传入的值 selname selname=new String(selname.getBytes("ISO-8859-1"), "UTF-8");转型下就好了,但是IE6的貌似有点小问题,IE7的就ok,为了安全,就设置下过滤器,很准哦,我自己刚刚解决了 太谢谢19楼。我找了一天,才看见你的帖子。并且测试通过。跪谢。不过还有一个问题。如果用的不是tomcat,而是其他的中间件。该怎么办? Extjs显示一条记录 请教 HibernateTranscationManager与DataSourceTranscationManager有什么区别 hibernate如何插入和更新含有blob字段的记录(mysql数据库)? struts2菜鸟级提问,请大侠们指定 tomcat里的设置问题. Applet jsp 急!!!关于html编码的问题 Hibernate开发问题 如何让编译好的文件存放在不同的文件夹下面。 我写的一个页面表单,其各个控件是自动生成的,请问怎么判断哪个控件是text型,哪个控件是下拉框?谢谢! dwr和JDOM错误问题 怎么我提交表单的servlet找不到啊
你先确认下
需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.
需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/>中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.
页面代码是这样的<a href="login.do?typeid=表格维护">表格维护</a>
action中就用getparameter得到,然后再setAttribe传到页面,该设的全设了,就是不能解决
typeid="表格维护";
typeid=URLEncoder.encode(typeid,"UTF-8");
href="login.do?typeid=<%=typeid%>",
String typeid= URLDecoder.decode(request.request.getParameter("typeid"),"UTF-8");
lz加了没呢?
解决方法.直接改变TOMCAT的默认字符编码方式:
tomcat做web服务器时,通过地址栏传中文参数时,为防止浏览器上的为乱码
需在服务器server.xml中配置对应的端口中配置编码方式即可.例如: <Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" useBodyEncodingForURI="true" URIEncoding="UTF-8"/> 中加入useBodyEncodingForURI="true" URIEncoding="UTF-8"就可以了.
才是正解
结贴把!!!
URL传入的值 selname
selname=new String(selname.getBytes("ISO-8859-1"), "UTF-8");
转型下就好了,但是IE6的貌似有点小问题,IE7的就ok,为了安全,就设置下过滤器,很准哦,我自己刚刚解决了
不过还有一个问题。
如果用的不是tomcat,而是其他的中间件。该怎么办?