主题 : 模板中的中文文件名上传到suse后为乱码,首页打开出错
级别: 白丁
UID: 28996
积分:6 加为好友
威望: 0 精华: 0
主题:1 回复:1
注册时间:2012-02-06
在线时长:0
1#   发表于:2012-02-06 15:36:08  IP:218.55.*.*
为何文件名不命名为英文名?
环境:suse 10

1、文件名称显示如下,导致访问首页就出错:

/tomcat-7.0.21/webapps/jeecms/WEB-INF/t/cms/www/red/index> ls -alt
×ü?? 24
drwxrwxr-x  2 cloud root  4096 2011-12-19 18:20 .
drwxrwxr-x 18 cloud root  4096 2011-12-19 18:20 ..
-rw-rw-r--  1 cloud root 15234 2011-12-19 17:02 -?ê?.html

2、访问出错:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.context.ApplicationContextException: Could not load FreeMarker template for URL [/WEB-INF/t/cms/www/red/index/首页.html]; nested exception is java.io.FileNotFoundException: Template /WEB-INF/t/cms/www/red/index/首页.html not found.
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:656)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.apache.catalina.filters.ExpiresFilter.doFilter(ExpiresFilter.java:1179)
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
com.jeecms.common.web.ProcessTimeFilter.doFilter(ProcessTimeFilter.java:38)

root cause

org.springframework.context.ApplicationContextException: Could not load FreeMarker template for URL [/WEB-INF/t/cms/www/red/index/首页.html]; nested exception is java.io.FileNotFoundException: Template /WEB-INF/t/cms/www/red/index/首页.html not found.
com.jeecms.common.web.springmvc.SimpleFreeMarkerView.checkTemplate(SimpleFreeMarkerView.java:102)
com.jeecms.common.web.springmvc.SimpleFreeMarkerView.initApplicationContext(SimpleFreeMarkerView.java:79)
org.springframework.context.support.ApplicationObjectSupport.initApplicationContext(ApplicationObjectSupport.java:119)
org.springframework.web.context.support.WebApplicationObjectSupport.initApplicationContext(WebApplicationObjectSupport.java:72)
org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73)


级别: 总版主
UID: 10736
积分:148366 加为好友
威望: 205 精华: 42
主题:287 回复:126121
注册时间:2010-09-08
在线时长:15.12
2#   发表于:2012-02-06 15:39:23  IP:182.217.*.*
之前版本考虑到兼容性的问题,模板没有使用中文,结果有很多用户要求要中文,所以3.x使用中文模板名称。
考虑到linux、unix一般都是使用UTF-8编码,是支持中文。目前有以下几种解决方案。
1、可以查看一下系统的默认编码是什么,如果不是UTF-8编码,可以考虑修改系统默认编码为UTF-8编码。
2、如果系统默认编码是UTF-8,但模板还是乱码,这就要考虑使用FTP上传工具的问题了。需要修改FTP客户端编码,改为UTF-8。
3、如果无法修改服务器编码,或者由于其他种种原因就是不想使用中文文件名,还有一个最终极的解决办法。模板名称是由国际化实现的,找到 /WEB-INF/languages,打开这个目录下的所有文件,查找tpl.开头的配置,将这些中文模板名称改成自己想要的英文名,并将相应的模板文件改成英文名。
路漫漫其修远兮,吾将上下而求索!
1 共1页