How do I check a string is url encoded or not in golang?

huangapple go评论91阅读模式
英文:

How do I check a string is url encoded or not in golang?

问题

我不知道字符串的来源,它可能是URL编码的。你想知道如何测试它是普通字符串还是URL编码字符串。你可以使用以下代码进行测试:

import (
	"fmt"
	"log"
	"net/url"
)

func decode(str1 string) string {
	resl, err := url.QueryUnescape(str1)
	if err != nil {
		log.Println(err)
	}
	return resl
}

func ifUrlEncoded(str string) bool {
	_, err := url.QueryUnescape(str)
	return err == nil
}

func main() {
	str := "elementINPUT61599119%5B%5D"
	if ifUrlEncoded(str) {
		fmt.Println(decode(str))
	} else {
		fmt.Println(str)
	}
}

这段代码中,ifUrlEncoded函数用于检测字符串是否是URL编码的,decode函数用于解码URL编码的字符串。在main函数中,首先使用ifUrlEncoded函数检测字符串是否是URL编码的,如果是,则使用decode函数解码字符串并打印结果;如果不是,则直接打印原始字符串。

英文:

I dont know what is the source of string it can be url encoded how do I test it whether it is a normal string or url encoded string
this using this particular code

func decode(str1 string) {
   //str1 := "elementINPUT61599119%5B%5D"
   resl, err := url.QueryUnescape(str1)
   log.Println(err)
   return resl
}

func ifUrlEncoded(string string) bool{
  if //function{
    return true
  }
  return false
}

func main(){
 if ifUrlEncoded(str){
   fmt.Println(decode(str))
 }
else{
 fmt.Println(str)
}
}

答案1

得分: 4

如果我理解正确,你想在将字符串传递给QueryUnescape之前确定该字符串是否能够被处理吗?如果是这样,是没有必要的。如果QueryUnescape无法处理给定的字符串,它将返回一个错误。

decoded, err := url.QueryUnescape(originalString)

if err != nil {
    // 无法使用此方法解码字符串,因此将其视为“普通”字符串
    decoded = originalString
}
英文:

If I understand correctly, you want to find out if the string is able to be processed by QueryUnescape before passing it to QueryUnescape? If so, there's no need. If QueryUnescape is unable to process the string you gave, it will return an error.

decoded, err := url.QueryUnescape(originalString)

if err != nil {
    // The string was not able to be decoded this way, so treat it as a "normal" string
    decoded = originalString
}

</details>



huangapple
  • 本文由 发表于 2022年6月3日 17:36:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/72487648.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定