解決swfupload上傳文件后,點擊文件下載時,文件名出現中文亂碼問題

由于同事離職需要接手一個開發(fā)進10年的struts項目,遇到了經典的中文亂碼問題。
好好的項目,怎么到了我的手里,上傳文件就變成亂碼了呢?
仔細想想,排除了項目文件編碼設置的情況,肯定是因為環(huán)境問題。
對比了生產環(huán)境,結果發(fā)現tomcat配置不一樣。

這里先po出解決方案:

在tomcat/conf/server.xml文件中,將Connector添加如下兩項配置URIEncoding和useBodyEncodingForURI。

<Connector port="8080" protocol="HTTP/1.1" 
connectionTimeout="20000" redirectPort="8443" 
URIEncoding="UTF-8" useBodyEncodingForURI="true"/>

至于這兩個配置的含義可以百度,大概意思如下:

URIEncoding:對URI中出現的中文進行decode,解決X.do找不到執(zhí)行類的問題。

useBodyEncodingForURI:解決queryString參數的亂碼問題。我的問題就是這個啦

上述兩個配置不指定,默認值為ISO-8859-1

具體情況分析:

1.調試前臺js代碼從uploadstart()直到上傳成功,文件名顯示正常,頁面中文名鏈接渲染正常,說明問題不在js前端;
2.請求跳轉到后臺Action后直接從request中拿到的filename就已經是亂碼,并且基類中已經設置request.setCharacterEncoding("UTF-8");說明后臺就是拿UTF-8去解析參數的,沒有問題;
3.中文亂碼使用new String(fid.getBytes("ISO-8859-1"),"UTF-8")測試才為正常中文名稱,說明中間被什么中間件給轉成萬惡的ISO-8859-1了,事實上,就是tomcat!

心得體會:

代碼問題不大的話,優(yōu)先檢查環(huán)境!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容