故障原因
-----------------------------------------------------
在tomcat5.0中,当请求一个中文的文件名(软件下载)时,会提示找不到文件路径,出现此类问题,最根本的问题就是文件名(字符串)编码不同,而导致了资源无法找到。
解决办法 一
-----------------------------------------------------
更改tomcat全局配置,并在页面中对中文文件名进行编码
1、修改 $tomcat$/conf/server.xml ,找到下面的配置段
<Connector port="8080" maxThreads="150" minSpareThreads="25" ....>
找到后,查看是否存在配置属性 URIEncoding,如果有,则修改其属性值为 URIEncoding='GBK',没有则添加这一属性值对。
2、在需要进行中文文件下载的地方调用 cn.com.dekn.cms.util.Convert 类进行编码转换,例如:
<a href="<%=cn.com.dekn.cms.util.Convert.convertURLStrToGBK(file_res_info.getRESOURCE_SAVE_PATH())%>" target="_blank"><%=file_res_info.getNAME()%></a>
3、重新启动tomcat,再次尝试下载中文文件(不要直接在URL中直接输入中文,而是通过第2步那个链接进入),发现可以正常下载中文文件名
不良影响: 对cms4j现有中文URL无任何影响,但是这种方式,在下载中文保存对话框中,中文文件名成了乱码,仅此而已,不影响下载与使用。
解决办法 二
-----------------------------------------------------
1、仅按照方法一中第1步,不同的是,这里把 URIEncoding='GBK' 改为 URIEncoding='UTF-8' ,保存后,重启tomcat即可实现中文文件名的下载
不良影响: 对CMS4J现有中文URL参数的页面有影响,会导致接收中文出现乱码,所以对这些页面要进行编码转换。
*******************************************************************
* JAVA / JSP 版网站内容管理系统 (CMS For Java)
* 感谢您对CMS4J的支持
* www.cms4j.com
*
* CMS4J 版权所有 2004-2006
* 软件作者: Dekn
* QQ:4626636
* MSN / Mail: cms4j@hotmail.com
*******************************************************************