目前有final URL url = new URL(urlString);
,但我遇到了不支持路徑中非ASCII的服務器。Java - 如何編碼非拉丁字符的URL路徑
使用Java(Android版),我需要從
http://acmeserver.com/download/agc/fcms/兒子去哪兒/兒子去哪兒.png
編碼的URL
http://acmeserver.com/download/agc/fcms/%E5%84%BF%E5%AD%90%E5%8E%BB%E5%93%AA%E5%84%BF/%E5%84%BF%E5%AD%90%E5%8E%BB%E5%93%AA%E5%84%BF.png
就像瀏覽器做。
我檢查URLEncoder.encode(s, "UTF-8");
,但它也編碼/
斜線
http%3A%2F%2acmeserver.com%2Fdownload%2Fagc%2Ffcms%2F%E5%84%BF%E5%AD%90%E5%8E%BB%E5%93%AA%E5%84%BF%2F%E5%84%BF%E5%AD%90%E5%8E%BB%E5%93%AA%E5%84%BF.png
有沒有辦法做到這一點不只是解析字符串的方法獲取?
http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars從
在URI屬性值B.2.1非ASCII字符雖然URI是 不含非ASCII值(見[URI],第2.1節)作者 有時指定它們在屬性期望URI的值(即,在DTD中用%URI定義的 )。例如,下面的href的值 是非法的:
<A href="http://foo.org/Håkon">...</A>
我們建議用戶代理採取以下約定 在這種情況下,處理非ASCII字符:
- 表示每個字符UTF-8(參見[RFC2279])作爲一個或多個 字節。
- 使用URI轉義機制(即通過將每個字節轉換爲%HH,其中HH是字節值的十六進制標記 )轉義這些字節。
好的,所以無論如何要創建一個URI對象。 – 2014-10-08 10:03:38
是的。 URI是位置地址。如果您從未擁有過URI,那麼您的應用永遠不會知道發送/接收請求的位置。 – erad 2014-10-08 10:06:44
我試圖作爲一個班輪'最終的URL url = new URI(urlString).toURL();'但它沒有編碼路徑。 – 2014-10-08 10:20:09