go学习-JS的encodeURIComponent转go

背景

encodeURIComponent() 函数通过将特定字符的每个实例替换成代表字符的 UTF-8 编码的一个、两个、三个或四个转义序列来编码 URI(只有由两个"代理"字符组成的字符会被编码为四个转义序列)。

与 encodeURI() 相比,此函数会编码更多的字符

JS的encodeURIComponent 转为Go的net/url标准库中提供的QueryEscape

encodeURIComponent

以下字符不会被编码:

复制代码
字母(A-Z,a-z)和数字(0-9)
特定字符:-、_、.、!、~、*、'、(、)、

这些字符在encodeURIComponent中被视为保留字符,不需要进行编码。

JS

js 复制代码
console.log(encodeURI('Hello, 世1+2界!'));

输出 Hello%2C%20%E4%B8%96%E7%95%8C!

Go

go 复制代码
func TestDemo(t *testing.T) {
	str := "Hello, 世1+2界!"
	encodedStr := url.QueryEscape(str)
	// 如果是go解码,则可执行可不执行,返回的结果都是一样的
	encodedStr = strings.Replace(encodedStr, "+", "%20", -1)
	fmt.Println(encodedStr)

	decodedStr, err := url.QueryUnescape(encodedStr)
	if err != nil {
		fmt.Println("解码失败:", err)
		return
	}

	fmt.Println(decodedStr)
}

输出 Hello%2C%20%E4%B8%961%2B2%E7%95%8C%21

总结

还是有些许差异,如果代码中涉及转换,注意特殊字符是否会用到

对于空格这种,用不到也就不用操这么多心了

相关推荐
盛夏绽放几秒前
Excel导出实战:从入门到精通 - 构建专业级数据报表的完整指南
开发语言·javascript·excel·有问必答
Mintopia3 分钟前
🌀曲面细分求交:在无限细节中捕捉交点的浪漫
前端·javascript·计算机图形学
超浪的晨3 分钟前
Java Set 集合详解:从基础语法到实战应用,彻底掌握去重与唯一性集合
java·开发语言·后端·学习·个人开发
Mintopia6 分钟前
🧙‍♂️用 Three.js 判断一个点是否在圆内 —— 一次圆心和点的对话
前端·javascript·three.js
香蕉可乐荷包蛋24 分钟前
Python学习之路(十三)-常用函数的使用,及优化
开发语言·python·学习
挽淚30 分钟前
JavaScript 数组详解:从入门到精通
javascript
言兴31 分钟前
教你如何理解useContext加上useReducer
前端·javascript·面试
sunbyte34 分钟前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | GoodCheapFast(Good - Cheap - Fast三选二开关)
前端·javascript·css·vue.js·tailwindcss
今禾38 分钟前
一行代码引发的血案:new Array(5) 到底发生了什么?
前端·javascript·算法
南篱42 分钟前
JavaScript 中的 this 关键字:从迷惑到精通
javascript