遇到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廣告之類都可以搵我傾傾呀~