求各种情况下乱码问题的解决方法。。

解决方案 »

  1.   

    1、JSP与页面参数之间的乱码 
    强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或request.setCharacterEncoding("gb2312")。 
    如果在JSP将变量输出到页面时出现了乱码,可以通过设置 response.setContentType("text/html;charset=GBK")或 response.setContentType("text/html;charset=gb2312")解决
    更简洁的办法是使用Servlet规范中的过虑器指定编码,过滤器的在web.xml中的典型配置和主要代码如下:  web.xml:  CharacterEncodingFilter  net.vschool.web.CharacterEncodingFilter  encodingGBK  CharacterEncodingFilter  /*  CharacterEncodingFilter.java:  public class CharacterEncodingFilter implements Filter  {  protected String encoding = null;  public void init(FilterConfig filterConfig) throws ServletException  {  this.encoding = filterConfig.getInitParameter("encoding");  }  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException  {  request.setCharacterEncoding(encoding);  response.setContentType("text/html;charset="+encoding);  chain.doFilter(request, response);  }  } 
      

  2.   

    2、Java与数据库之间的乱码 
    解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode,如 Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如如mm的mysql驱动:jdbc:mysql://localhost/WEBCLDB?useUnicode=true& characterEncoding=GBK。 
      

  3.   

    3.Java与文件/流之间的乱码 
    Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中 FileInputStream和FileOutputStream是基于字节流的,常用于读写二进制文件。读写字符文件建议使用基于字符的 FileReader和FileWriter,省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式,如果文件内容与系统编码方式不一致,可能会出现乱码。在这种情况下,建议使用FileReader和FileWriter的父类:InputStreamReader/OutputStreamWriter,它们也是基于字符的,但在构造函数中可以指定编码类型:InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。