字符编码过滤器中对特殊的路径进行特殊处理
来源:互联网 发布:Oracle sql格式化时间 编辑:程序博客网 时间:2024/06/06 03:06
我做在线打开的时候将word文档转换为html文件,保存在temp文件夹下,然后通过链接打开html文件实现“在线打开word”的功能,结果产生了乱码,原因是在windows系统下生成的html文件默认是“gb2312"编码的,而我们的网页使用了编码过滤器将所有请求全部改为”UTF-8“编码的了。所以我就将这个编码过滤器改进了下,先对请求路径进行判断,如果请求是来自保存html文件的"temp“文件夹就进行特殊处理编码为”gb2312“从而解决乱码。
这个过滤器对“temp”文件夹下的文件进行“GB2312”编码,对所有其他请求进行“UTF-8”编码:
- public class EncodeFilter implements Filter {
- public void destroy() {
- }
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain china) throws IOException, ServletException {
- HttpServletRequest httprequest = (HttpServletRequest)request;
- String servletPath = httprequest.getServletPath();
- String dir = null;
- if(servletPath.indexOf("/", 1)>1)
- dir = servletPath.subSequence(servletPath.indexOf("/", 0)+1, servletPath.indexOf("/", 1)).toString();
- if(dir!=null&&"temp".equals(dir)){
- request.setCharacterEncoding("GB2312");
- response.setCharacterEncoding("GB2312");
- }else{
- request.setCharacterEncoding("UTF-8");
- response.setCharacterEncoding("UTF-8");
- }
- china.doFilter(request, response);
- }
- public void init(FilterConfig arg0) throws ServletException {
- }
- }
在web.xml文件中的配置(与tomcat版本有关)
- <filter>
- <filter-name>EncodeFileter</filter-name>
- <filter-class>com.star.util.EncodeFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>EncodeFileter</filter-name>
- <servlet-name>*</servlet-name>
- </filter-mapping>
- 字符编码过滤器中对特殊的路径进行特殊处理
- URL中对特殊字符的处理
- URL中对特殊字符的处理
- json中对特殊字符的处理
- JSON中对特殊字符的处理
- 用encodeURIComponent对特殊字符&,#,$,@,?,+进行编码
- http请求中对特殊字符的处理,以及xml中对特殊字符的处理
- URL路径中包含特殊字符%的处理
- 在js中处理特殊字符对应的中文编码
- 关于jsp中使用jstl对特殊字符的处理
- Web URL中对特殊字符的处理
- iOS Http传输过程中对特殊字符的处理
- JAVA文件路径特殊字符“/”的处理
- Java对特殊编码方式的处理
- 对javascript特殊字符的处理
- sql like 对特殊字符的处理
- php对特殊字符的处理总结
- URL 对特殊字符的处理
- 好
- jquery简介和发展
- 一个javascript写的media player播放器
- 加入CSDN大家庭
- 试试
- 字符编码过滤器中对特殊的路径进行特殊处理
- myeclipse中文改英文
- 面向对象
- 数组
- 开始我Java之旅
- LinqToXml
- java读写文件操作
- 1
- 魔兽世界编程宝典读书笔记(2)