zoukankan      html  css  js  c++  java
  • 解决JSP开发Web的中文问题

      这段时间经常看到有人问到web开发中怎么中文总是?号。原因其实很简单,因为大家大多用的是tomcat服务器,而tomcat服务器的默认编码为 iso-8859-1(西欧字符)。就是因为iso-8859-1(西欧字符)编码造成了我们经常看到?号。
      方法一:最简单也是用的最多的方法。
      <%@ page language="java" pageEncoding="GBK" %>
      或者<%@ page contenttype="text/html;charset=gbk";>这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。
      这个方法用于jsp页面中的中文显示。
      方法二:使用过滤器。
      过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。
      编写一个SetCharacterEncodingFilter类。
      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 自动生成方法存根
      if (ignore || (request.getCharacterEncoding() == null)) {
      String encoding = selectEncoding(request);
      if (encoding != null)
      request.setCharacterEncoding(encoding);
      }
      chain.doFilter(request, response);
      }
      public void destroy() {
      // TODO 自动生成方法存根
      this.encoding = null;
      this.filterConfig = null;
      }
      protected String selectEncoding(ServletRequest request) {
      return (this.encoding);
      }
      }
      然后再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-->
      使用过滤器的好处很多,特别是项目之中。
      而且在使用国际化时就更有用了,只要在页面指定 <%@ page language="java" pageEncoding="UTF-8" %>,服务器就会根据本地Locale来显示正确的字符集。
      所以我特别推荐使用过滤器。
      方法三:修改tomcat的server.xml文件中URIEncoding.
      <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>
      这个方法主要针对从url中获取字符串的问题。

    广州达内,www.gztarena.com www.gdtarena.com www.s-tarena.com
  • 相关阅读:
    HDU 5835 Danganronpa 贪心
    HDU 5842 Lweb and String 水题
    HDU 5832 A water problem 水题
    Codeforces Beta Round #14 (Div. 2) A. Letter 水题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem K. UTF-8 Decoder 模拟题
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem I. Alien Rectangles 数学
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem H. Parallel Worlds 计算几何
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem F. Turning Grille 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem C. Cargo Transportation 暴力
    Western Subregional of NEERC, Minsk, Wednesday, November 4, 2015 Problem G. k-palindrome dp
  • 原文地址:https://www.cnblogs.com/javaitpx/p/2837102.html
Copyright © 2011-2022 走看看