[問題] 關於處理URL解碼問題
在處理url網址時 常會使用urllib.unquote來解
例如將 %22%27%3C%3E%5B%5C%5D%5E%60%7B%7D 解為"'/<>[\]^`{}
(原始字串為%2522%2527/%253C%253E%255B%255C%255D%255E%2560%257B%257D
所以要解兩次)
不過遇到大於127以後的字元 就會有很大的問題
例如輸入中文字串 "中文測試"
會變成%25E4%25B8%25AD%25E6%2596%2587%25E6%25B8%25AC%25E8%25A9%25A6
經過一次解碼成為%E4%B8%AD%E6%96%87%E6%B8%AC%E8%A9%A6
如果不經處理 在使用一次urllib.unquote會出現超過範圍的錯誤
因此要對字串重新編碼為unicode
使用unicode(str) or str.decode('UTF8')
但是解碼結果會將每一個獨立的字元解出來
也就是%E4變成ä %B8變成¸-
而不是將%E4%B8%AD解成'中'
網路上搜尋很久 一般是說將字串加上.decode('UTF8') 可是這只對少部份字元有效
要如何有要針對中文來處理...
補一個unquote的實做
def htc(m):
return unichr(int(m.group(1),16))
def unquote(url):
rex=re.compile('%([0-9A-H][0-9A-H])',re.I)
return rex.sub(htc,url)
照理說修改正規語言的規則及UTF-8的對應關係 應該是可行
只是搞了很久一直弄不出來 網路上搜尋也一直沒找到解法
不知道版上有沒有 有經驗的前輩指點一下..感謝
--
◢███◤█◢███◤█◢███◤█◢███
███◤█████◤█████◤▂▂███◤
██◤█████◤█████◤█████◤███ ◢◣◢◣
█████◤▊▎███◤█████◤████ █◣◤█
◢█████◤█▊▎██◢▆████◤██▊▎█ ◥██◤
█████◤█████◤█████◤███▊▎◤ξJoshuaζ◥◤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.2.215
推
06/02 17:43, , 1F
06/02 17:43, 1F
→
06/02 18:53, , 2F
06/02 18:53, 2F
→
06/02 18:54, , 3F
06/02 18:54, 3F
推
06/02 19:04, , 4F
06/02 19:04, 4F
→
06/02 19:07, , 5F
06/02 19:07, 5F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章