本文主要探讨中文乱码的解决方法,在Fckeditor For Java中的中文乱码主要有三个方面:
一、中文图片上传后文件名显示为乱码的情况
二、创建目录时中文为乱码的情况
三、当引用的图片为中文时,在页面中显示为红叉的情况
这种乱码情况,就我目前的感觉而言是Fckeditor的Bug,不是我们有没有配置正确的问题了,要想解决以上三个问题,需要我们修改Fckeditor的源码。
对于问题1和2我们可以把它用一个方法解决掉,使用UUID(此类位于java.util.UUID,不明白的可以查API)解决掉此问题。思路是把这些上传上来的中文名字进行随机重命名英文字符串,这样就不存在中文问题了。
由于我们无法直接修改FckEditor,所以需要我们重写ConnectorServlet这个Servlet文件,我们在我们的项目里面新建一个Class文件,命名为ConnectorServlet,直接把net.fckeditor.connector.ConnectorServlet的内容copy过来。另外需要修改web.xml文件把servlet的指向定位到我们自己重写的Servlet
假如我们把我们新建的ConnectorServlet放在包test.fckeditor下面,则WEB.XML需要把:
<servlet-class>
net.fckeditor.connector.ConnectorServlet
</servlet-class>
改成
<servlet-class>
test.fckeditor.ConnectorServlet
</servlet-class>
其他保持不变就即可!
在我们copy后会出现一个报错,说是Messages这个找不到,我们使用Eclipse的修复功能导入net.fckeditor.connector.Messages这个包就可以了。
下面我们开始修改这个Servlet,解决我们上述的三个中文乱码问题。
第一个问题:找到doPost方法中的try...catch语句块。在try前面增加这么一行语句:
upload.setHeaderEncoding("UTF-8");
在这里我们对于这个upload进行编码,解决中文问题。到这里对于项目进行重新布署就会发现再上传中文名字的图片就不会显示为乱码了。
第二个问题:找到doGet方法中的
String newFolderStr = UtilsFile.sanitizeFolderName(request
.getParameter("NewFolderName"));
修改为:
String tempStr = request.getParameter("NewFolderName");
tempStr = new String(tempStr.getBytes("iso8859-1"),"utf-8");
String newFolderStr = UtilsFile.sanitizeFolderName(tempStr);
在原来的代码中没有对rerquest的数据进行重新编码,所以遇到中文就会出现乱码!
第三个问题:其实有两种解决方法,一是修改服务器的URL编码,但是修改服务器的话,在我们自己的电脑上比较方便,如果是我们要放到自己买的空间中就不容易了。另外如果修改了服务器的编码,可能影响到其它项目。所以这种方法就不写了
二是我们使用UUID对上传的文件进行重命名成英文字条串。
找到doPost中的try语句块中的第一个if 即:
if (!ExtensionsHandler.isAllowed(resourceType, extension))
ur = new UploadResponse(UploadResponse.SC_INVALID_EXTENSION);
在这段代码前面添加下面的一行语句:
filename = UUID.randomUUID().toString()+"."+extension; //extension为扩展名,在上文中得到的
这样我们的三个问题都解决了。如果我们做了第三步,那第一个修改也就没有什么作用了,所以使用的话,只进行二三步就OK了。
分享到:
相关推荐
前段时间在fck的官网上溜达的时候发现了 fckEditor for java 2.4X 的版本,没想到for java的也有新的版本出来了,用了那么老长时间的for java2.3 ,呵呵 于是就下来体验了一下,确实不错,而且fck2.6的版本,对文件的上传...
fckeditor-java-core-2.4.jar 中文乱码 文件重名 中文文件夹
包括fckeditor2.6.4+fckeditor-java-2.4.1配置所需资源包及fckeditor-java-2.4.1源码和配置说明文档。 配置中解决了中文乱码,并为上传文件自动创建日期文件夹。
### FCKEditor for Java知识点详解 #### 一、FCKEditor简介 FCKEditor是一款功能强大的富文本编辑器,广泛应用于各种Web应用中。它能够为用户提供类似桌面应用程序的编辑体验,支持插入图片、表格、链接等多媒体...
- **FCKeditor-java-demo-2.4.war**: 示例项目,展示了如何集成FCKeditor到Java Web应用中。 #### 2. FCKeditor的目录和文件精简 为了减少不必要的文件,提高加载速度,可以进行如下操作: 1. **删除临时文件及...
本文将深入探讨如何将FCKeditor 2.4版本集成到SSH(Struts2、Hibernate、Spring)框架中,并解决可能出现的问题。 **1. 集成FCKeditor** 首先,在`web.xml`文件中,你需要配置一个名为`Connector`的Servlet,这个...
FCKeditor-java没有很好的解决中文问题需要我们修改它的源代码后重新编译打包打包过程如下: 1 新建一个web工程名字为FCKeditor-java-2.3,然后把FCKeditor-2.3-java.zip解压缩后的代码拷贝到工程目录下 2如果是用...
11.3 Struts 开发中的中文乱码问题 11.4 Action 数据获取与传递 11.5 Struts 表单验证 第12章 标签库及其应用 12.1 Struts标签库基础知识 12.2 Struts标签库应用实例 12.3 JSTL基础知识 12.4 EL表达式基础...