github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgXss/kmgXss.go (about) 1 package kmgXss 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "html/template" 7 ) 8 9 //在模板上面经常需要直接传入int等数据类型. 10 func Urlv(obj interface{}) string { 11 s := fmt.Sprint(obj) 12 // 系统的QueryEscape版本 存在bug,主要是' '变'+'这个坑, 13 out := make([]byte, 0, len(s)) 14 for i := 0; i < len(s); i++ { 15 c := s[i] 16 if 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9' || c == '-' || c == '.' || c == '_' { 17 out = append(out, byte(c)) 18 } else { 19 out = append(out, '%', "0123456789ABCDEF"[c>>4], "0123456789ABCDEF"[c&15]) 20 } 21 } 22 return string(out) 23 } 24 25 func H(obj interface{}) string { 26 s := fmt.Sprint(obj) 27 return template.HTMLEscapeString(s) 28 } 29 30 func Jsonv(obj interface{}) string { 31 out, err := json.Marshal(obj) 32 if err != nil { 33 panic(err) 34 } 35 return string(out) 36 }