在java web开发过程中总是会碰到各种问题,最近做毕业设计的时候就遇到了,现在把我处理乱码问题统一下写出来。
1:首先是配置个过滤器,这样只要是通过form收集的收据一般都没有什么问题。
放入过滤器的步骤:
1.1:写入一个javabean文件,放在src目录下面:
代码如下:
public class CharacterEncodingFilter implements Filter {
/**
* 编码方式
*/
public String characterEncoding;
/**
*
*/
public boolean enabled;
/**
*
* Create date:2012-4-5 Method name:destroy Description: [方法描述]
*/
public void destroy() {
characterEncoding = null;
}
/**
*
* Create date:2012-4-5 Method name:doFilter Description: [方法描述]
*
* @param request
* @param response
* @param chain
* @throws IOException
* @throws ServletException
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (enabled || characterEncoding != null) {
request.setCharacterEncoding(characterEncoding);
response.setCharacterEncoding(characterEncoding);
}
chain.doFilter(request, response);
}
/**
*
* Create date:2012-4-5 Method name:init Description: [方法描述]
*
* @param config
* @throws ServletException
*/
public void init(FilterConfig config) throws ServletException {
characterEncoding = config.getInitParameter("characterEncoding");
enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled")
.trim());
}
}
1.2 然后在web.xml中进行相应的配置:
<!-- 过滤器--> <filter> <filter-name>characterEncoding</filter-name> <filter-class>com.xxx.xxx.CharacterEncodingFilter</filter-class> <init-param> <param-name>characterEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>enabled</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- -->
2:如果是通过js,jquery传值的方式的话:
2.1:在js当中需要进行encodeURI,如下列代码:
//缴费确认
function payMentSure(){
var orderNo = $('#orderNo').text(); //受理单编号
var paytotal = $('#paytotal').text(); //支付总金额
if(window.confirm('确定要缴费吗?')){
document.forms[0].action = path
+ "/remainingPay.do?method=payMentSure&orderNo="
+ encodeURI(encodeURI(orderNo))+"&paytotal="+encodeURI(encodeURI(paytotal));
document.forms[0].submit();
}
}
2.2:在action里面接收js中传过来的值的时候,同时也需要用URLDecoder进行解码操作:
代码如下:
// 取得支付总金额
String temp2 = request.getParameter("paytotal");
String str = URLDecoder.decode(temp2, "UTF-8");
以上是我在开发过程中解决乱码问题,当然如果用到了tomcat7.0的话,就根本不需要这个进行处理乱码问题,tomcat7.0自带了解决乱码问题;当然你也可以在tomcat6.0或者更低的版本中设置成为UTF-8的模式解决乱码问题。