Three methods to solve the problem of web program displaying Chinese in JSP development

Time:2021-9-8

Method 1: the simplest and most used method
  <%@ page language=”java” pageEncoding=”GBK” %>
Or <% @ page contenttype = “text / HTML”; charset=gbk”;> GB2312 or GBK can be used here, but GBK supports more characters than GB2312.
This method is used for Chinese display in JSP pages.
Method 2: use filter
The filter is mainly used for form submission, and the data inserted into the database is? number. This is also whether Tomcat should not encode according to the code specified in the request or adopt the default coding method iso-8859-1 on its own.
Write a setcharacterencodingfilter class.
  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 SetCharacterEncodingFilter implements Filter {
   protected String encoding = null;
   protected FilterConfig filterConfig = null;
   protected boolean ignore = true;
   public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig=filterConfig;
    this.encoding=filterConfig.getInitParameter(“encoding”);
    String value=filterConfig.getInitParameter(“ignore”);
    if(value==null)
     this.ignore=true;
    else if(value.equalsIgnoreCase(“true”))
     this.ignore=true;
    else
     this.ignore=false;
   }
   public void doFilter(
  ServletRequest request, ServletResponse response, FilterChain chain)
   throws IOException, ServletException {
/ / todo automatically generates method stubs
   if (ignore    (request.getCharacterEncoding() == null)) {
    String encoding = selectEncoding(request);
    if (encoding != null)
     request.setCharacterEncoding(encoding);
   }
   chain.doFilter(request, response);
  }
  public void destroy() {
/ / todo automatically generates method stubs
   this.encoding = null;
   this.filterConfig = null;
  }
  protected String selectEncoding(ServletRequest request) {
   return (this.encoding);
  }
  }
Then add Web. XML
  <!– Set Character Encoding–>
  <filter>
   <filter-name>Set Character Encoding</filter-name>
   <filter-class>com.struts.common.SetCharacterEncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
   </init-param>
  </filter>
  <filter-mapping>
   <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
   </filter-mapping>
  <!– Set Character Encoding–>
There are many benefits to using filters, especially in projects.
Moreover, it is more useful when using internationalization. As long as <% @ page language = “Java” pageencoding = “UTF-8″% > is specified on the page, the server will display the correct character set according to the local locale.
So I especially recommend using filters.
Method 3: modify uriencoding in the server.xml file of Tomcat
  <Connector debug=”0″ acceptCount=”100″ connectionTimeout=”20000″ disableUploadTimeout=”true”
  port=”80″ redirectPort=”8443″ enableLookups=”false” minSpareThreads=”25″ maxSpareThreads=”75″
  maxThreads=”150″ maxPostSize=”0″ URIEncoding=”GBK” >
  </Connector>
This method is mainly used to get the string from the URL.
In Tomcat 5.0 and above, the post and get methods are different when dealing with coding. If you get Chinese in the URL, it will appear? number. But there is no problem in Tomcat 4.1, because the post and get methods of Tomcat 4.1 are the same when dealing with coding.