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

总结

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

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

相关推荐
nashane18 分钟前
HarmonyOS 6学习:页面跳转弹窗状态保持全解析
学习·华为·harmonyos·harmonyos 5
山楂树の19 分钟前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
小郑加油1 小时前
python学习Day10天:列表进阶 + 内置函数 + 代码简化
开发语言·python·学习
Bechamz2 小时前
大数据开发学习Day23
大数据·学习·ajax
薛定猫AI2 小时前
【深度解析】Gemma Chat 本地 AI 编程 Agent:Electron + MLX + 开源模型的离线 Vibe Coding 实战
javascript·人工智能·electron
坚持就完事了2 小时前
YARN资源管理器
大数据·linux·hadoop·学习
全栈前端老曹3 小时前
【前端地图】多地图平台适配方案——高德、百度、腾讯、Google Maps SDK 差异对比、封装统一地图接口
前端·javascript·百度·dubbo·wgs84·gcj-02·bd09
笑虾3 小时前
Win10 修改注册表 让鼠标悬停PNG上时 tip 始终显示分辨率
开发语言·javascript·ecmascript
lolo大魔王3 小时前
Go语言的并发、协调创建和通信机制
开发语言·golang
吃着火锅x唱着歌3 小时前
深度探索C++对象模型 学习笔记 第四章 Function语意学(2)
c++·笔记·学习