解決Java getResource 路徑中含有中文的情況


問題描述

  當Java調用getResource方法,但是因為路徑中含有中文時,得不到正確的路徑

問題分析

  編碼轉換問題

  當我們使用ClassLoader的getResource方法獲取路徑時,獲取到的路徑被URLEncoder.encode(path,"utf-8")編碼了,當路徑中存在中文和空格時,他會對這些字符進行轉換,這樣,得到的往往不是我們想要的真實路徑,所以我們可以調用URLDecoder.decode()方法進行解碼,以便得到原始的中文及空格路徑。

相關知識

  URLEncoder.encode(String s, String enc)
  使用指定的編碼機制將字符串轉換為 application/x-www-form-urlencoded 格式

  URLDecoder.decode(String s, String enc)
  使用指定的編碼機制對 application/x-www-form-urlencoded 字符串解碼。

  發送的時候使用URLEncoder.encode編碼,接收的時候使用URLDecoder.decode解碼,都按指定的編碼格式進行編碼、解碼,可以保證不會出現亂碼

解決辦法

  String packagePath = url.getPath().replaceAll("%20","");//解決路徑中含有空格的情況
  packagePath = java.net.URLDecoder.decode(packagePath,"utf-8"); //解決路徑包含中文的情況

  注意,正常情況下第一句是不需要的,第二句可以完成所有的工作。


免責聲明!

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



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