JSP的几种中文解决方案
来源:互联网 发布:南北朝五代十国 知乎 编辑:程序博客网 时间:2024/05/21 06:59
学习J2EE至今,项目也只做了两个,中途遇到一些问题,最多的可能要数中文显示及插入数据库的中文问题。现总结如下:
(一)定义中文转换方法:
新建JSP页面,命名为toChinese.jsp 也可以是别的;
定义方法为:
<%!
String toChinese(String str) {
String rs = null;
byte[] temp;
try {
temp = getBytes("ISO8859-1");
rs = new String(temp,"gb2312");
}
catch(java.io.UnsupportedEncodingException e) {
e.printStackTrace();
}
return rs;
}
String toChinese(Object obj) {
return toChinese(obj.toString());
}
%>
在JSP页面中,需要用到中文转换的地方就引入该页面,然后用这个方法进行转换。
如:<%@ include file="toChinese.jsp" %>
String content = toChinese(request.getParameter("tContent"));
PS:这种方法是比较保守的做法。因为无论把系统移植到任何地方,都可以用。
(二)设置HTTP询问为GB2312:
在每个需要中文转换的地方设置:request.setCharacterEncoding("gb2312");
那么,所有以POST或者GET方式传递的参数都会以GB2312方式编码。
PS:这种方法很方便,但是也造成编码的重复。重用性级差。
(三)编写Filter过滤器,让所有的页面的HTTP询问都以GB2312方式编码:
编写过滤器
package com.pharm.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
/**
* 字符编码过滤器 <br>
*
* 让 request 为简体中文 GB2312
*
* @author FuChun-阿影
* @version 1.1
*/
public class EncodingFilter implements Filter {
protected FilterConfig filterConfig;
private String targetEncoding = "gb2312";
/**
* 初始化过滤器和一般的Servlet一样,它也可以获得初始参数
*
* @throws ServletException if an error occurred.
*/
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
this.targetEncoding = config.getInitParameter("encoding");
}
/**
* 进行过滤处理,这个方法最重要,也是Filter的核心代码
*
* @throws IOException if an error occurred.
* @throws ServletException if an error occurred.
*/
public void doFilter(ServletRequest srequest,ServletResponse sresponse,FilterChain chain)
throws IOException,ServletException {
System.out.println("使用以下方法对HTTP请求进行编码: encoding="+targetEncoding);
HttpServletRequest request = (HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);
chain.doFilter(srequest,sresponse);
}
/**
* 设置过滤器日志
*/
public void setFilterConfig(final FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
/**
* 实现Filter的方法,销毁过滤器
*/
public void destroy() {
this.filterConfig = null;
}
}
在WEB.xml中描述:
<filter>
<filter-name>encoding</filter-name>
<filter-class>EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
PS:重用性极好。
- JSP的几种中文解决方案
- JSP几种常见中文乱码解决方案
- 关于JSP开发过程中的几种中文乱码问题的解决方案
- JSP页面乱码的几种解决方案
- 解决中文乱码的几种解决方案
- JSP中文乱码的几种解决方法
- JSP中文乱码的解决方案
- JSP的中文乱码解决方案
- AJAX中文乱码的几种后台的解决方案
- Java Web中文问题的几种解决方案
- jsp中文件路径的几种形式
- jsp,db,apache中文乱码的解决方案
- JSP,STRUTS等的中文乱码解决方案
- JSP显示中文问题的解决方案
- JSP,STRUTS等的中文乱码解决方案
- jsp页面的中文乱码解决方案讨论
- JSP 中文乱码问题的处理解决方案
- 遇到jsp中文显示乱码的解决方案
- 学习C++ Primer 笔记 2
- 哪位高手帮忙?全排序问题
- Subversion和Bugfree的整合
- 试试
- Berkeley DB 概述
- JSP的几种中文解决方案
- 中国凭什么不给“90分以上的学生”以“美国教育哲学的培养”
- 从今天起,这块Blog 就是我的了,哦,包括你
- 常用ASCII 码对照表
- 震撼!中华军魂第一军敢死队照片(来看看)
- 统计
- 初读GoF经典
- Windows重装大全
- 让英文Windows XP操作系统正确显示中文