(求助) 页面form中,提交的中文,form Bean 中得到的是乱码 页面form中,提交的中文,比如 username=中文,装载这个页面form数据的 form Bean 中得到的username字段值是乱码.我在JSP页面中已经设置了 <%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=utf-8" %>请问怎么解决? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 charset="gb2312"然后从浏览器到javaBean的时候两者编码不同,所以一定会出现乱码,可以修改服务器的编码识别GBK或者是在java中用过滤器来实现对编码的转换,要不就用哪种getbyte 其是很简单 自己试试,如果是tomcat修改服务器也许就可以,虽然可移植性差,但是先用着修改conf下的serve.xml的97行加上URIEncoding="GBK" 谢谢江南烟雨我加了 URIEncoding="GBK" ,问题还是没有解决我的web.xml中已经加了如下的: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> 今晚的东西终于写完了 你这是使用过滤器肯定好用了,基本不会出现什么bug而修改服务器的话有的好用有的不好用,我们现在一般都是使用这种方式 <%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=utf-8" %>这里面的两个编码,第一个 pageEncoding="GBK"指的是jsp页面的编码,就是你的操作系统中jsp原文件的编码,容器会检测这个值读取原文件编译。第二个charset=utf-8指的是jsp输出的结果的编码,同时浏览器会将编码设成相应编码,当浏览器发送请求时,会使用此编码对发送的内容编码。出现乱码的原因是,在默认情况下,容器使用iso8859-1来解析参数,前后编码不一致就出现了乱码。解决办法,通过调用request的setCharset(方法名可能不对)方法可以设置容器的编码。这种方法就设置过滤器的方法。但是对于get请求发送的数据对于tomcat来讲,这种方式无效,需要设置serve.xml中connector的URIEncoding属性来指定,在4。x以后可以使用useBodyURIEncoding来设置和contentType="text/html;charset=utf-8" 中一样的编码。也就是说如果完全解决编码问题,对于tomcat来讲需要两种方式都加。“我加了 URIEncoding="GBK" ,问题还是没有解决”是因为这个设置之后影响tomcat解析url中的参数也就是说只对get请求有效。加了过滤器有效是因为你的form是通过post提交的。 接受的servlet也要社一下编码!! 非常感谢 sansong089 说得这么详细.现在的情况:JSP页面 :-------使用post方式<%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=utf-8" %>server.xml:----------- <Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" useBodyURIEncoding="utf-8" disableUploadTimeout="true" />web.xml: <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>还是问题依然存在.我也在action对应的处理方法中 该方法传入的四个参数 mapping,form,request,response设置了request.setCharacterEncoding("UTF-8");此时form里面存放的页面数据就是乱码了.不知道sansong089说的设置容器的编码 是应该怎样来设置. 在action中设置request.setCharacterEncoding("UTF-8");是不对的.因为这时数据已经从request中取出,放到actionForm中了.设置过滤器没起作用的原因是,你的过滤器根本没有映射.do,而所有的struts的请求都是有由.do处理的.所以把action中设置request.setCharacterEncoding("UTF-8");去掉.然后把过滤器映射中加上,*.do对于post请求应该就没有问题了. contentType="text/html;charset=utf-8" 该成charset="GBK" JSP菜鸟的问题:好菜啊 问一个java连接sql server2005的问题 边框怎么没有了? 请教一个提示框怎么做? 怪事!为什么我的css tab 在html里可以用,在jsp里却不可以呢,大家帮我测试下(代码) jquery 异步验证。 问个taglib的问题,在线等待 串口连接问题 sqlserver2000 jdbc type4连接的问题 double in_sum=double.parseDouble(in_sum1);有错? 虽然简单,但还是希望知道的能告诉我,谢谢! 求一javabean/ servlet的翻页程序.之前一直用纯jsp的,感觉不咋地.
其是很简单 自己试试,如果是tomcat修改服务器也许就可以,虽然可移植性差,但是先用着修改conf下的serve.xml的97行加上URIEncoding="GBK"
我加了 URIEncoding="GBK" ,问题还是没有解决
我的web.xml中已经加了如下的: <filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
这里面的两个编码,第一个 pageEncoding="GBK"指的是jsp页面的编码,就是你的操作系统中jsp原文件的编码,容器会检测这个值读取原文件编译。第二个charset=utf-8指的是jsp输出的结果的编码,同时浏览器会将编码设成相应编码,当浏览器发送请求时,会使用此编码对发送的内容编码。
出现乱码的原因是,在默认情况下,容器使用iso8859-1来解析参数,前后编码不一致就出现了乱码。
解决办法,通过调用request的setCharset(方法名可能不对)方法可以设置容器的编码。这种方法就设置过滤器的方法。但是对于get请求发送的数据对于tomcat来讲,这种方式无效,需要设置serve.xml中connector的URIEncoding属性来指定,在4。x以后可以使用useBodyURIEncoding来设置和contentType="text/html;charset=utf-8" 中一样的编码。也就是说如果完全解决编码问题,对于tomcat来讲需要两种方式都加。
“我加了 URIEncoding="GBK" ,问题还是没有解决”是因为这个设置之后影响tomcat解析url中的参数也就是说只对get请求有效。加了过滤器有效是因为你的form是通过post提交的。
JSP页面 :-------使用post方式
<%@ page language="java" pageEncoding="GBK" contentType="text/html;charset=utf-8" %>
server.xml:-----------
<Connector className="org.apache.catalina.connector.http.HttpConnector" port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" useBodyURIEncoding="utf-8" disableUploadTimeout="true" />web.xml:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>还是问题依然存在.
我也在action对应的处理方法中
该方法传入的四个参数 mapping,form,request,response
设置了request.setCharacterEncoding("UTF-8");
此时form里面存放的页面数据就是乱码了.不知道sansong089说的设置容器的编码 是应该怎样来设置.
设置过滤器没起作用的原因是,你的过滤器根本没有映射.do,而所有的struts的请求都是有由.do处理的.所以把action中设置request.setCharacterEncoding("UTF-8");去掉.
然后把过滤器映射中加上,*.do对于post请求应该就没有问题了.