今天寫了一個freemaker導出word的工程,導出的文件名中有中文,比較習慣在測試時用Chrome瀏覽器,快要把更新發給現場了,想起來現場用的是IE瀏覽器,保險起見還是也測試下,一測試發現糟了亂碼了。
有網有百度不怕,然后查查查發現了還挺多人有這個問題的,應該是由于內核不一樣吧
發現都是通過判斷請求的頭來進行瀏覽器判斷,雖然網上有大神寫出來的但是還是想自己按照步驟走一下。
現在Chrome中跟蹤到了請求的頭在network
中很容易看出來大概是這個樣子
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
再去IE看看唄,一看蒙蔽了,這網絡中怎么不管怎么請求都是屁都看不到,糾結了,還是用工具吧,安利一款工具呀 Fiddler 跟蹤請求特好用
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
程序就這樣寫就行啦
String userAgent=request.getHeader("User-Agent").toLowerCase();
//如果是IE
if(userAgent.contains("trident")){
fileName= URLEncoder.encode(fileName,"utf-8");
}else{
fileName=new String(fileName.getBytes("utf-8"),"ISO-8859-1");
}