在使用FCKeditor上传文件时,当文件名为中文时,上传后的文件名为乱码,解决方法如下:
1. 修改fckeditor-java-core-2.4.jar源码,在源码中找到在web.xml文件中配置的[color=red]net.fckeditor.connector.ConnectorServlet[/color]类,在[color=red]doPost[/color]方法中,添加 [color=red]upload.setHeaderEncoding("UTF-8")[/color] ,修改如下:
修改好后,重新打包。
或者,自己新建一个类,复制net.fckeditor.connector.ConnectorServlet类中代码,在其基础上,添加以上的代码,再在web.xml中的Connector配置成自定义的Connector类即可。
2. 按以上完成后,中文命名的文件上传上去后将不会出现乱码,但引用时,会找不到该文件,如引用图片时,显示为叉。
解决方法:修改tomcat中的server.xml文件,在 [color=red]<Connector>[/color] 标签中添加 [color=red]URIEncoding="utf-8"[/color] 属性,如下:
1. 修改fckeditor-java-core-2.4.jar源码,在源码中找到在web.xml文件中配置的[color=red]net.fckeditor.connector.ConnectorServlet[/color]类,在[color=red]doPost[/color]方法中,添加 [color=red]upload.setHeaderEncoding("UTF-8")[/color] ,修改如下:
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
/**
* 解决上传中文名的文件会出现乱码问题
* 添加 by songsp 2009-1-8 15:54:09
*/
upload.setHeaderEncoding("UTF-8");
/**
* end
*/
try {
List<FileItem> items = upload.parseRequest(request);
// We upload only one file at the same time
FileItem uplFile = items.get(0);
//...
修改好后,重新打包。
或者,自己新建一个类,复制net.fckeditor.connector.ConnectorServlet类中代码,在其基础上,添加以上的代码,再在web.xml中的Connector配置成自定义的Connector类即可。
<servlet>
<servlet-name>Connector</servlet-name>
<servlet-class>org.sp.util.FCKeditorConnectorServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
2. 按以上完成后,中文命名的文件上传上去后将不会出现乱码,但引用时,会找不到该文件,如引用图片时,显示为叉。
解决方法:修改tomcat中的server.xml文件,在 [color=red]<Connector>[/color] 标签中添加 [color=red]URIEncoding="utf-8"[/color] 属性,如下:
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="utf-8"/>