当我们在进行web开发中通过URL传递参数时,类似于查询业务,经常需要传递关键字到后端数据库进行比较
目前一切正常,但是在查看后端日志时发现我们在URL上携带的参数炸变成了一堆编码
查资料得知:当 URL 路径,或者查询参数中带有中文、特殊字符的时候,就需要对 URL 进行编码(采用十六进制编码格式)。URL 编码的原则是使用安全字符(即没有特殊用途或者特殊意义的字符)去表示那些不安全的字符。
为什么需要URL编码
URL 之所以需要编码,是因为 URL 中的某些字符会引起歧义,比如若 URL 查询参数中包含”&”或者”%”就会造成服务器解析错误,再比如,URL 的编码格式采用的是 ASCII 码而非 Unicode,这表明 URL 中不允许包含任何非 ASCII 字符(比如中文),否则就会造成 URL 解析错误。
因此我们需要将url编码重新解码成字符串格式
import "net/url"
key := c.Query("keyword")
//通过url.QueryUnescape()就可以将url编码进行解码
keyword, err := url.QueryUnescape(key) //此时keyword="炸"
escapeUrl := url.QueryEscape(urlStr) //QueryEscape()是将url进行编码