關於網頁中圖片為中文名無法顯示的解決辦法


轉載: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 
然后文件名再加上相應的擴展名即可。既可以存入數據庫也可以直接保存文件名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM