`
human_zx
  • 浏览: 63531 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

乱码问题解决~

    博客分类:
  • java
阅读更多
   本人是java新手,刚开始学习java框架,在学习和使用的过程中,最头疼的一件事情就是乱码问题,有时候从数据读出数据在页面显示乱码,有时,从页面提交数据,才数据库显示乱码,因此把个人解决乱码的方法和大家分享下,希望能帮助和我一样的出学着,希望他们不要被乱码困扰.
  对于数据库数值在页面显示乱码问题,比较简单,把页面编码写成utf-8或者gbk格式就可以拉,下面我主要介绍下页面提交后数据库乱码问题的解决.
  1.你可以写一个字符编码的类来进行编码转换:
如.
private static String changeEncoding(String input, String sourceEncoding, String targetEncoding)
{ if (input == null || input.equals(""))
{
return input;
}
try
{
byte[] bytes = input.getBytes(sourceEncoding);
return new String(bytes, targetEncoding);
} catch (Exception ex) { }
return input;
}
下面是调用 
String cont=request.getParameter("cont");  
cont = changeEncoding(cont, "ISO8859-1", "utf-8");
2.需要转换时直接调用函数转换.
如:
String username=new String((userform.getUsername()).getBytes("ISO-8859-1"),"UTF-8")
3.通过上面的两个方法,可以解决编码问题,大家可以看出来,这样的话就增加了不少代码和重复了好多操作,很不方面,所以我我们可以用一个filter,在web.xml里面添加一次,到出可用.
代码类如下:
package com.struts.commons;
import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter
{

public void destroy()
{
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
throws IOException, ServletException
{
// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8");
chain.doFilter(request, response);


}

public void init(FilterConfig arg0)
throws ServletException
{
// TODO Auto-generated method stub

}

}

在web.xml中加上这样的代码
<filter>
<filter-name>encoding</filter-name>
<filter-class>com.struts.commons.EncodingFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样就完全可以解决乱码问题了.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics