方法一:最简单也是用的最多的方法 <%@ page language=”java” pageEncoding=”GBK” %> 或者<%@ page contenttype=”text/html;charset=gbk”;>这里可以用gb2312或者gbk,只是gbk比gb2312支持跟多的字符。 这个方法用于jsp页面中的中文显示。 方法二:使用过滤器 过滤器使用主要针对表单提交,插入数据库的数据都是?号。这也是应为tomcat不按request所指定的编码进行编码,还是自作主张的采用默认编码方式iso-8859-1编码。 编写一个SetCharacterEncodi 在JSP开发中,中文字符的正确显示是一个常见的问题,特别是在与数据库交互或者表单提交时。本文将介绍两种有效的方法来解决这个问题。 方法一:设置JSP页面编码 这是最简单且常用的方法,主要是通过在JSP页面的顶部添加指令来设定页面的编码格式。有两种写法: 1. `<%@ page language="java" pageEncoding="GBK" %>` 2. `<%@ page contentType="text/html;charset=GBK" %>` 这两种方式都可以确保JSP页面中的中文字符能被正确解析。其中,`GBK`或`GB2312`是汉字编码标准,GBK相对于GB2312支持更多的汉字,但两者都属于简体中文编码。 方法二:利用过滤器(Filter) 当表单数据提交到服务器时,如果未正确处理编码,可能会导致插入数据库的数据出现乱码,通常显示为问号。这是因为Tomcat默认使用ISO-8859-1编码,而非我们期望的GBK或UTF-8等中文编码。这时,我们可以自定义一个名为`SetCharacterEncodingFilter`的过滤器来解决这个问题。 创建一个实现`javax.servlet.Filter`接口的类,例如: ```java public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; protected boolean ignore = true; // 初始化方法,从web.xml获取配置参数 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 { if (!ignore && (request.getCharacterEncoding() == null)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } chain.doFilter(request, response); } // 销毁方法 public void destroy() { this.encoding = null; this.filterConfig = null; } // 选择合适的编码 protected String selectEncoding(ServletRequest request) { return (this.encoding); } } ``` 然后,在`web.xml`配置文件中注册这个过滤器: ```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>GBK</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` 这样,所有通过该过滤器的请求都将自动设置为指定的编码(这里是GBK),从而避免了因编码问题导致的乱码。 总结: 在JSP开发中,解决中文显示问题主要涉及字符编码的设定。第一种方法是在每个JSP页面中设置页面编码,而第二种方法是全局设置过滤器,对所有请求统一处理编码。选择哪种方法取决于项目的需求和规模,一般来说,大型项目或对编码有严格要求的项目更倾向于使用过滤器来确保一致性。同时,随着Unicode编码(如UTF-8)的普及,建议在新项目中优先考虑使用UTF-8,以支持更多语言和字符集。
- 粉丝: 1
- 资源: 967
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Lawrence C. Evans Partial Differential Equations.djvu
- CFA知识点梳理系列:CFA Level II, Reading 4 Big Data Projects
- 专业问题 · 语雀.mhtml
- 基于Vue+TP6的B2B2C多场景电商商城设计源码
- 基于小程序的研知识题库小程序源代码(java+小程序+mysql).zip
- 基于小程序的微信小程序的点餐系统源代码(java+小程序+mysql).zip
- 基于小程序的宿舍管理小程序源代码(java+小程序+mysql).zip
- 基于小程序的小区服务系统源代码(python+小程序+mysql).zip
- QT项目之中国象棋人工智能
- 基于小程序的疫情核酸预约小程序源代码(java+小程序+mysql).zip
评论0