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

总结

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

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

相关推荐
拉不动的猪21 分钟前
try...catch 核心与生态协作全解析
前端·javascript·vue.js
BullSmall1 小时前
《道德经》第五十八章
学习
摇滚侠1 小时前
Vue 项目实战《尚医通》,预约挂号的路由与静态搭建,笔记36
javascript·vue.js·笔记
码上成长1 小时前
React 18 并发特性:useTransition 和 useDeferredValue 动画级解释
javascript·react.js·ecmascript
三品吉他手会点灯2 小时前
STM32F103学习笔记-16-RCC(第4节)-使用 HSI 配置系统时钟并用 MCO 监控系统时钟
笔记·stm32·单片机·嵌入式硬件·学习
Lester_11012 小时前
嵌入式学习笔记 - 关于看门狗定时器的喂狗的操作放在中断还是放在主循环
笔记·单片机·学习
G***T6912 小时前
React性能优化实战,避免不必要的重渲染
前端·javascript·react.js
缪懿2 小时前
JavaEE:多线程基础,多线程的创建和用法
java·开发语言·学习·java-ee
网络点点滴3 小时前
标签的ref属性
前端·javascript·vue.js
AA陈超3 小时前
ASC学习笔记0017:返回此能力系统组件的所有属性列表
c++·笔记·学习·ue5·虚幻引擎