解决Java工程URL路径中含有中文的情况
問題:
當(dāng)Java工程路徑中含有中文時,得不到正確的路徑
***
解決:
這其實是編碼轉(zhuǎn)換的問題。當(dāng)我們使用ClassLoader的getResource方法獲取路徑時,獲取到的路徑被URLEncoder.encode(path,"utf-8")編碼了,當(dāng)路徑中存在中文和空格時,他會對這些字符進(jìn)行轉(zhuǎn)換,這樣,得到的往往不是我們想要的真實路徑,所以我們可以調(diào)用URLDecoder.decode()方法進(jìn)行解碼,以便得到原始的中文及空格路徑。
Java代碼 :
String packagePath = url.getPath().replaceAll("%20","");//解決路徑中含有空格的情況
packagePath = java.net.URLDecoder.decode(packagePath,"utf-8"); //解決路徑包含中文的情況
***
結(jié)果:
/D:/Java%e7%a8%8b%e5%ba%8f%ef%bc%88idea)/smartframework/core/target/classes/
解碼之后:/D:/Java程序(idea)/smartframework/core/target/classes/
***
關(guān)于解碼和編碼
URLEncoder.encode(String s, String enc)
使用指定的編碼機(jī)制將字符串轉(zhuǎn)換為 application/x-www-form-urlencoded 格式
URLDecoder.decode(String s, String enc)
使用指定的編碼機(jī)制對 application/x-www-form-urlencoded 字符串解碼。
發(fā)送的時候使用URLEncoder.encode編碼,接收的時候使用URLDecoder.decode解碼,都按指定的編碼格式進(jìn)行編碼、解碼,可以保證不會出現(xiàn)亂碼
轉(zhuǎn)載于:https://www.cnblogs.com/lanqi/p/7895624.html
總結(jié)
以上是生活随笔為你收集整理的解决Java工程URL路径中含有中文的情况的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kbmmw 的HTTPSmartServ
- 下一篇: HDU 4323 Magic Numbe