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

总结

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

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

相关推荐
嘉年华-cocos6 小时前
考研英语 5400 纯数据版
学习·英语·背单词·音标
是你的小橘呀6 小时前
深入理解 JavaScript 预编译:从原理到实践
前端·javascript
风止何安啊6 小时前
栈与堆的精妙舞剧:JavaScript 数据类型深度解析
前端·javascript
用户47949283569157 小时前
Chrome DevTools MCP:让 AI 助手直接操作浏览器开发工具
前端·javascript·chrome
Rysxt_7 小时前
Vuex 教程 从入门到实践
前端·javascript·vue.js
海底的星星fly7 小时前
【Prompt学习技能树地图】生成知识提示技术的深度解析与应用
人工智能·学习·prompt
槿花Hibiscus8 小时前
C++基础:Reactor模型设计思想与muduo架构理解
学习
xuehuayu.cn8 小时前
js es6 class 类中的值是异步赋值, 子类中如何获取这个值?
javascript·es6
威风的虫8 小时前
ES6 数组方法:告别循环,拥抱函数式编程
开发语言·前端·javascript
小杨快跑~8 小时前
ES6 Promise:告别回调地狱的异步编程革命
前端·javascript·ecmascript·es6