`

解决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中获取字符串的问题。

  在tomcat5.0及以上版本,post和get方法在处理编码时有所不同。如果你在url中获取中文就会出现?号。但在tomcat4.1版本没有问题,因为tomcat4.1的post和get方法在处理编码时是一样的。

作者: rickhunter,  出处:blogjava
分享到:
评论

相关推荐

    WEB程序设计-JSP(第2章 JSP开发基础).pdf

    WEB程序设计-JSP(第2章 JSP开发基础).pdf WEB程序设计-JSP(第4章 JSP内置对象).pdf WEB程序设计-JSP(第6章 Servlet技术).pdf WEB程序设计-JSP(第7章 JSP实用组件).pdf WEB程序设计-JSP(第9章 JSP高级程序设计)....

    JSP Web应用程序开发.doc

    jsp动态网页制作,JSP Web应用程序开发.doc

    用JSP开发的Web应用是跨平台的

    JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是... 用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。

    web开发技术小程序

    ASP/asp.net/jsp 程序设计 Web开发技术--图片与代码

    jsp程序设计开发web应用

    课程实例代码,方便自己练习和运用。资源分了章节。---清华大学出版社

    WEB程序设计-JSP(第3章 JSP语法).pdf

    WEB程序设计-JSP(第2章 JSP开发基础).pdf WEB程序设计-JSP(第4章 JSP内置对象).pdf WEB程序设计-JSP(第6章 Servlet技术).pdf WEB程序设计-JSP(第7章 JSP实用组件).pdf WEB程序设计-JSP(第9章 JSP高级程序设计)....

    Web程序设计课件—JSP

    Web程序设计之JSP课件,包含各章节实例!

    使用JSP开发Web应用程序__总结.doc

    使用JSP开发Web应用程序__总结.doc

    WEB程序设计-JSP(第4章 JSP内置对象).pdf

    WEB程序设计-JSP(第2章 JSP开发基础).pdf WEB程序设计-JSP(第4章 JSP内置对象).pdf WEB程序设计-JSP(第6章 Servlet技术).pdf WEB程序设计-JSP(第7章 JSP实用组件).pdf WEB程序设计-JSP(第9章 JSP高级程序设计)....

    基于JSP的WEB网站构建与程序设计实训

    基于JSP的WEB网站构建与程序设计实训,结合jsp,web实战开发网站

    Java Web开发中文乱码问题的研究与解决.pdf

    在利用Servlet/JSP技术开发java Web应用程序的时候,不可避免的会遇到中文乱码问题,本文首先介绍了Web应用中常用的编码方式,然后分析了J2EE平台下Web应用中文乱码问题产生的原因,并在此基础上针对不同情况提出了解决...

    解决JSP开发中Web程序显示中文三种方法

    这个方法用于jsp页面中的中文显示。 方法二:使用过滤器 过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1...

    纯JSP-JDBC开发Web程序

    1.架构技术简单,只包含JSP和JDBC+MySQL,不需要学习即可快速开发Web应用,稍加改造也可以用于其他数据库应用程序; 2.用特殊的回调机制进行JDBC封装,以致不用每次的JDBC访问都要进行数据库连接和关闭,支持...

    《Java Web开发与实战--Eclipse+Tomcat+Servlet+JSP整合应用》.(刘伟,张利国).[PDF].zip

    上传、java mail和分页显示、web编程中文乱码问题及解决方案、应用程序的打包和部署等。书中还深入讲解了客户端验证框架jsvalidation、在线文本编辑器fckeditor和apache commons的一些类库等功能强大的实用开发工具...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第14章 jsp开发的两种模型 441 14.1 模型1 441 14.2 模型2 445 14.3 小结 449 第15章 标签库(tag library) 450 15.1 标签库api 450 15.1.1 标签的形式 451 15.1.2 tag接口 451 15.1.3 iterationtag接口 ...

    jsp 开发技术大全

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    JSP开发技术大全 源码

    mail组件、程序日志组件、JavaScript脚本语言、CSS样式、XML入门技术、在JSP中应用Ajax技术、在JSP中应用DOM解析XML、在JSP中应用JDOM解析XML、在JSP中应用SAX解析XML、EL表达式、JSTL标签库、自定义标签、Hibernate...

    JSP数据库开发实例精粹 源码

    本书首先介绍了JSP开发Web应用程序的重点技术技巧,对初学者有很好的指导意义。然后以多个实用的系统为例,详细地讲述了用JSP创建Web应用程序的详细过程。内容包括在线书店、企业内部管理信息系统、新闻发布系统、...

Global site tag (gtag.js) - Google Analytics