jsp <input text> post提交到action 中文乱码
我在jsp的页面中有一个<input type="text" name="name" id="name"/> 然后post方式提交到action,在action中String name接收,但name却是乱码,如何解决?
环境:tomcat6+jdk1.6+myeclipse6.5+struts2
试过filter 和拦截器,在拦截器中 request.setCharacterEncoding(gbk utf-8 gb2312);都试过了,不可以。
但在action中,使用new String(str.getBytes("ISO-8859-1"),"utf-8"); 可以
------解决方案--------------------首先保证你的页面的编码格式是UTF-8,
------解决方案--------------------最好把字符集统一起来,而不是用转码转来转去的。
源代码编码、页面编码、中间件URL编码、数据库编码,这四者全部统一成:UTF-8
源代码编码这个是开发工具中配置的。
页面编码就是:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
中间件如果是Tomcat的话,可以:
<Connector port="8080" debug="0"
URIEncoding="UTF-8"/>
数据库编码是在数据库创建时配置的(不过你这个帖子中不涉及)。
------解决方案--------------------但在action中,使用new String(str.getBytes("ISO-8859-1"),"utf-8"); 可以
如果是这样说明你页面的编码有问题
------解决方案--------------------把前台和过滤器的编码都统一写成UTF-8 应该就可以了。。
------解决方案--------------------大家编码都喜欢用UTF-8,可是我喜欢用gb2312……
------解决方案--------------------你设置的格式要和页面的格式一样
------解决方案--------------------哦 你自己可以将编码格式改为:GBK也行的。
------解决方案--------------------一般是格式的问题,如果UTF-8解决不了的话,可以将他换成GBK
------解决方案--------------------request.setCharacterEncoding(UTF-8);用<%= %>来输出显示下,看下能不能得到正常的值,如果不能,在考虑在其它过程中出了错
------解决方案--------------------关键问题是检查你的整个应用,究竟各环节用了什么字符集,这是乱码的根本原因。
HTML页面编码,也就是浏览器右键查看的编码格式。
JSP页面编码。
Java源代码编码。
中间件默认编码。
------解决方案--------------------
------解决方案--------------------很简单。我的网站也是一样的。你试试用这两种办法来处理。总有一个函数能用的。
static public String decodeNotAjax(String name) throws Unsupported
EncodingException{
if (name == null) return null;
return new String(name.getBytes("ISO-8859-1"),"gbk");
}
static public String getEncodeString(String value) throws UnsupportedEncodingException{
if (value == null) return null;
return java.net.URLDecoder.decode(value, "utf-8");
}
------解决方案--------------------最好把编码统一。
------解决方案--------------------页面编码 统一改成 UTF-8~~~貌似都知道了。
------解决方案--------------------统一编码,就不用用什么***.getByte什么的