golang的url编码和解码

1,021 阅读1分钟

当我们在进行web开发中通过URL传递参数时,类似于查询业务,经常需要传递关键字到后端数据库进行比较

image.png

目前一切正常,但是在查看后端日志时发现我们在URL上携带的参数变成了一堆编码

image.png

查资料得知:当 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进行编码