首页 > 代码库 > URL escape and unescape
URL escape and unescape
Recently, I study the package net/url of Golang.
I was puzzled about the escape and unescape of url string.
then I find a clear and accurate answer at: http://www.sislands.com/coin70/week6/encoder.htm
the code in golang:
1 // unescape unescapes a string; the mode specifies 2 // which section of the URL string is being unescaped. 3 func unescape(s string, mode encoding) (string, error) { 4 // Count %, check that they‘re well-formed. 5 n := 0 6 hasPlus := false 7 for i := 0; i < len(s); { 8 switch s[i] { 9 case ‘%‘:10 n++11 if i+2 >= len(s) || !ishex(s[i+1]) || !ishex(s[i+2]) {12 s = s[i:]13 if len(s) > 3 {14 s = s[0:3]15 }16 return "", EscapeError(s)17 }18 i += 319 case ‘+‘:20 hasPlus = mode == encodeQueryComponent21 i++22 default:23 i++24 }25 }26 27 if n == 0 && !hasPlus {28 return s, nil29 }30 31 t := make([]byte, len(s)-2*n)32 j := 033 for i := 0; i < len(s); {34 switch s[i] {35 case ‘%‘:36 t[j] = unhex(s[i+1])<<4 | unhex(s[i+2])37 j++38 i += 339 case ‘+‘:40 if mode == encodeQueryComponent {41 t[j] = ‘ ‘42 } else {43 t[j] = ‘+‘44 }45 j++46 i++47 default:48 t[j] = s[i]49 j++50 i++51 }52 }53 return string(t), nil54 }
After a period of home work, Now I am confident about implimenting the project: gocrawel by myself.
URL escape and unescape
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。