開源Webmail-Intouch2.2beta版部分漢字亂碼的解決

由於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文件,覆蓋原文件即可。下載文件信息】。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章