开源Webmail-Intouch2.2beta版部分汉字乱码的解决

来源:互联网 发布:python中verify false 编辑:程序博客网 时间:2024/05/21 22:35

由于Intouch2.2还处于beta阶段,一直也没有更新,部署后出现一些汉字乱码问题,经过调试源码解决了问题,简述如下:

发现汉字乱码的主要是Webmail的汉字名称的附件和Webdisk中的汉字名的文件。Webdisk中上传、和下载文件名中有汉字的文件,文件名都是乱码,而Webmail附件是添加附件、显示附件文件名都没有问题,就是点击下载或保存时文件名是乱码。

经过调试,问题主要出在DownloadService.java和DumpPartService.java中。

DumpPartService.java

if (download) {
    response.setHeader("Content-disposition","attachment; filename=/"" + fn + "/"");
} else {
    response.setHeader("Content-disposition","inline; filename=/"" + fn + "/"");
}

改为:

String fileName = Utility.updateTRChars(fn);

if (download) {
    response.setHeader("Content-disposition","attachment; filename=/"" + java.net.URLEncoder.encode(fileName,"UTF-8") + "/"");
} else {
    response.setHeader("Content-disposition","inline; filename=/"" + java.net.URLEncoder.encode(fileName,"UTF-8") + "/"");
}

Webdisk上传下载出现乱码和tomcat的设置也有关系,查看一下Tomcat配置文件Server.xml中关于port的设置部分,即"<port="8080"",在其中加入URIEncoding="UTF-8"这样一个属性。否则通过web上传的文件名可能有乱码。

DownloadService.java

response.setHeader("Content-disposition","attachment; filename=/"" + f.getName() + "/"");

改为

response.setHeader("Content-disposition","attachment; filename=/"" + java.net.URLEncoder.encode(f.getName(),"UTF-8") + "/"");

 

下面附件中是修改并编译好的两个class文件,覆盖原文件即可。下载【文件信息】。

原创粉丝点击