Servlet技術(shù)在下載中文名稱附件的時(shí)候都需要對(duì)文件名進(jìn)行重新編碼例如以下這種辦法:if?(agent.contains("MSIE"))?{????????//?IE瀏覽器
????????filename?=?URLEncoder.encode(filename,?"utf-8");
????????filename?=?filename.replace("+",?"?");
}?else?if?(agent.contains("Firefox"))?{????????//?火狐瀏覽器BASE64Encoder?base64Encoder?=?new?BASE64Encoder();
????????filename?=?"=?utf-8?B?"
????????????????+?base64Encoder.encode(filename.getBytes("utf-8"))?+?"?=";
}?else?{????????//?其它瀏覽器
????????filename?=?URLEncoder.encode(filename,?"utf-8");????????????????
}
其中agent就是請(qǐng)求頭User-Agent的值
一直這么用,但是有幾個(gè)問題一直不明白
1.為什么要用URLEncoder.encode(filename,?"utf-8");編碼成application/x-www-form-urlencoded?MIME?格式?我整個(gè)web應(yīng)用環(huán)境都是UTF-8,為什么還要用UTF-8進(jìn)行編碼?2.application/x-www-form-urlencoded?MIME?格式這個(gè)不是客戶端向服務(wù)器請(qǐng)求的格式么?為什么服務(wù)器響應(yīng)的時(shí)候也要用這種格式?3.瀏覽器到底能解析什么編碼呢?我看到使用new?String(fileName1.getBytes(“UTF-8”),”ISO8859-1”);這種方法在谷歌,火狐也可以進(jìn)行中文文件名的解析。沒有方法通知瀏覽器根據(jù)某種編碼進(jìn)行解碼么?
Servlet關(guān)于下載時(shí)中文名附件的一些問題?
慕蓋茨7059572
2019-01-12 16:18:57