轉載:http://lofei117.iteye.com/blog/1074182html
網頁中不少時候要用到圖片,經過img標籤或者濾鏡來顯示在頁面上。而當文件名爲中文名時會遇到圖片沒法正確加載,致使沒法顯示。
解決辦法以下:
1:改變服務器的配置,使服務器支持utf-8來顯示圖片。這個通過測試是有效的,可是有一點是服務器配置修改了之後,再使用request來獲取參數時,中文亂碼的問題。經過System.out.print來打印出來的參數是正確的,可是賦值給String對象後卻不是正確的值,再經過String對象的getBytes方法來轉換之後仍然不正確。因此放棄了這個方法。java
參照:數據庫
在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" />tomcat
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
而後文件名再加上相應的擴展名便可。既能夠存入數據庫也能夠直接保存文件名。服務器