轉載:http://lofei117.iteye.com/blog/1074182
網頁中很多時候要用到圖片,通過img標簽或者濾鏡來顯示在頁面上。而當文件名為中文名時會遇到圖片無法正確加載,導致無法顯示。
解決辦法如下:
1:改變服務器的配置,使服務器支持utf-8來顯示圖片。這個經過測試是有效的,但是有一點是服務器配置修改了以后,再使用request來獲取參數時,中文亂碼的問題。通過System.out.print來打印出來的參數是正確的,但是賦值給String對象后卻不是正確的值,再通過String對象的getBytes方法來轉換以后仍然不正確。所以放棄了這個方法。
參照:
在html頁面中,引用了帶漢字的圖片,形如<img src="/目錄/子目錄/圖片名字.jpg" />,如果沒有在tomcat配置URIEncoding,則無法顯示。修改方法:
在tomcat的server.xml中加入URIEncoding="utf-8" (網頁的編碼是utf-8)
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8" redirectPort="8443" />
2:我自己想的方法,可能已經有其他人想出來了。就是給中文名用utf-8編碼,出來一個帶有%號的字符串,對應相應的文件名。當然這還不夠,因為這個文件名瀏覽器會自動轉義解碼為對應的中文名,圖片還是無法顯示。於是我用了String對象的replace方法,將文件名的%全部替換為-;然后就可以正確顯示圖片了。缺點就是查找文件名不易於辨認識別。
編碼問題的確是很讓人寒心的,尤其是涉及到中文的地方。
mark了,希望對大家有點幫助,也給自己做點筆記,積累自己學到的知識。
String name ="哈哈哈";
String str = java.net.URLEncoder.encode(name, "utf-8");
//轉義后的為%E5%93%88%E5%93%88%E5%93%88
str = str.replace("%", "-");
//替換后為-E5-93-88-E5-93-88-E5-93-88
然后文件名再加上相應的擴展名即可。既可以存入數據庫也可以直接保存文件名。