如果你是.Net程序员,你应该庆幸你永远不可能遇到下面的问题
如果你是JSP程序员,你应该庆幸你遇到了和我一样的问题
那就是JSP页面中中文字符路径的转换和读取问题。
写这篇文章一是为了发泄,二是为了提醒看文章后的人别再陷入这种困境
发泄是气愤JSP为什么这么不灵活,一个中文字符整整折磨了我N天才给予解决,第二发泄是网络资源如此之多,为什么让我没法找到相关的资料。
发泄完毕,下面的部分为问题和解决方案
一、业务需求
1、上传一个视频文件到某个路径下,比如http://127.0.0.1:8080/JAVA编程/视频教程/中文字符.avi
2、页面管理部分希望可以预览到该视频文件
二、初步方案
1、利用SmartUpload组件实现文件的上传:前面的文章已给出具体方案
http://blog.csdn.net/rocket5725/archive/2009/04/10/4061597.aspx
2、利用JSP视频播放器播放该视频,代码如下:
三、效果
1、多数人会认为:预览成功,搞定(这种人就是像我这样的菜鸟)
2、实际结果:无法正常播放
3、理由:中文字符路径惹的祸
四、解决方案
1、修改Tomcat 6.0/conf/server.xml中的Connector节点
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK" //新加内容
/>
2、预览视频的页面务必保证在首行存在标准的JSP页面标识:
<%@ page language="java" contentType="text/html; charset=GBK" isELIgnored="false" pageEncoding="GBK"%>
3、完成字符转换的函数:utfTogbk(String str),具体实现如下:
注意:
1、import java.net.*;
2、斜杠‘/’一定不能做转换
4、最终实现的代码
5、播放成功。搞定中文字符问题