i am Roger Li

遇到Exception: URLDecoder: Illegal hex characters in escape (%) pattern

Caused by: java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern

近日小弟收到一位」L格價達人」價錢記錄app的用家回報,指輸入某一項資料後每次開app便彈app,無法正常使用。

我先要多謝願意花時間回饋問題給我的用戶,感謝你對呢隻app嘅支持,另外我亦十分抱歉我並沒有好好寫好呢隻app為你帶來不便……

正題了,在找出根問題的時候,發現問題的是來自文章標題的錯處: URLDecoder…

因為我以前處理不當,在執行 URLDecoder.decode(string, 「UTF-8″) 時, string並未有好好控制,以致string包含了」%」 此字符,而這是不正常的,所以會出Exception。

我今次的懶人解決方法是在URLDecoder.decode()前使用replaceAll() 去把」%」轉換成」%25″:

s1 = s.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
s1 = URLDecoder.decode(s1, "UTF-8");

成功,收工!

廣告: 上文提及的L格價達人app是小弟的一隻閒時作品,主要係俾自己記錄買嘢嘅價錢讓以後比較參考,有興趣試試的話可以到Google Play下載。 https://play.google.com/store/apps/details?id=hk.lookfor.lmypricelist

另外如果有需要搵人整App整Website整Google廣告之類都可以搵我傾傾呀~

發表回覆

你的電郵地址並不會被公開。 必要欄位標記為 *