当前位置: 首页 > news >正文

go学习-JS的encodeURIComponent转go

背景

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

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

encodeURIComponent

以下字符不会被编码:

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

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

JS

console.log(encodeURI('Hello, 世1+2界!'));

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

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

总结

还是有些许差异,如果代码中涉及转换,注意特殊字符是否会用到
对于空格这种,用不到也就不用操这么多心了

http://www.lryc.cn/news/171199.html

相关文章:

  • MySQL索引、事务与存储引擎
  • 【Spring面试】八、事务相关
  • Windows平台Qt6中UTF8与GBK文本编码互相转换、理解文本编码本质
  • 【探索Linux】—— 强大的命令行工具 P.9(进程地址空间)
  • ESP32主板-MoonESP32
  • Python 图片处理笔记
  • SpringCloud Ribbon--负载均衡 原理及应用实例
  • Redis的介绍以及简单使用
  • ad18学习笔记十二:如何把同属性的元器件全部高亮?
  • SpringSecurity 核心过滤器——SecurityContextPersistenceFilter
  • 反转单链表
  • 加速新药问世,药企如何利用云+网的优势?
  • C++中string对象之间比较、char*之间比较
  • MVVM模式理解
  • js常用的数组处理方法
  • [Document]VectoreStoreToDocument开发
  • 【LeetCode-简单题】225. 用队列实现栈
  • 数据预处理方式合集
  • 【前端】jquery获取data-*的属性值
  • GB28181学习(五)——实时视音频点播(信令传输部分)
  • 单例模式(饿汉模式 懒汉模式)与一些特殊类设计
  • 133. 克隆图
  • 交流耐压试验目的
  • 使用 YCSB 和 PE 进行 HBase 性能压力测试
  • 正则表达式相关概念及不可见高度页面的获取
  • 深入学习 Redis - 分布式锁底层实现原理,以及实际应用
  • Hive行转列[一行拆分成多行/一列拆分成多列]
  • TypeScript系列之类型 string
  • 【C++】动态内存管理 ③ ( C++ 对象的动态创建和释放 | new 运算符 为类对象 分配内存 | delete 运算符 释放对象内存 )
  • AMS爆炸来袭,上线即巅峰