[問題] URL encoding問題

看板java作者 (tnsshnews)時間10年前 (2015/01/26 09:30), 編輯推噓1(1011)
留言12則, 4人參與, 最新討論串1/1
Dear all, 小弟想去某個網站自動crawler資料, 觀察某網站的網址, 是要用Big5編碼URL, 但用java內建的URLEncoder編碼出來的又不一樣, 是編碼有兩套嗎? 無意間找到這個網站 http://www.mytju.com/classCode/tools/urlencode_big5.asp 它的URL encoding剛好跟我要抓的網站一樣, 但用java內建的encoder卻產生不出一樣的, 舉例說明一下, 例如http://sss.xxxx.aaa.vvv?text=編碼 編碼的部分拿 "林" 這個中文字來舉例, 在無意見中找到的轉碼網站結果如下, 字符 編碼10進制 編碼16進制 URL編碼 林 43596 AA4C %AAL java內建的URLEncoder產生出來的是16進位碼 %AA%4C 但網站要吃的卻是%AAL 有人知道這是哪種Big5編碼嗎 感激不盡 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.200.96 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1422235854.A.CBD.html

01/26 11:32, , 1F
%4C 跟 L 其實是同一件事, 看來對 ASCII 不熟唷
01/26 11:32, 1F

01/26 12:51, , 2F
但不知為何4C要轉成ascii, AA就不用呢
01/26 12:51, 2F

01/26 12:54, , 3F
看起來是A-Z, a-z有轉ascii, 其他都沒轉
01/26 12:54, 3F

01/26 13:04, , 4F
因為url encode是規定ascii非保留字元範圍的byte value要編
01/26 13:04, 4F

01/26 13:05, , 5F
成%xx,A-Z、a-z、0-9、-_.~就不用 ↑以外
01/26 13:05, 5F

01/26 13:07, , 6F
decode的時候應該是不管是%4C還是L都先轉成byte value
01/26 13:07, 6F

01/26 13:09, , 7F
再照對應編碼轉回來(big5的話AA4C變成"林"、414C變"AL")
01/26 13:09, 7F

01/26 13:10, , 8F
不用%4C用L原因就短啊,一樣的值少傳三個byte就是省
01/26 13:10, 8F

01/26 13:11, , 9F
問題在你說的網站為什麼不能處理%4C ↑兩
01/26 13:11, 9F

01/26 13:27, , 10F
不好意思, 是我太天兵了, 這個規則就是
01/26 13:27, 10F

01/26 13:28, , 11F
java Encoder做的結果, 是我搞錯了, 謝謝大家幫忙
01/26 13:28, 11F

01/26 19:40, , 12F
Base64
01/26 19:40, 12F
文章代碼(AID): #1KnPZEoz (java)
文章代碼(AID): #1KnPZEoz (java)