首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >编码/解码URL

编码/解码URL
EN

Stack Overflow用户
提问于 2012-12-11 20:17:46
回答 7查看 64.3K关注 0票数 77

在Go中编码和解码整个URL的推荐方式是什么?我知道url.QueryEscapeurl.QueryUnescape方法,但它们似乎不是我想要的。具体地说,我正在寻找像JavaScript的encodeURIComponentdecodeURIComponent这样的方法。

谢谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-12-12 03:14:02

您可以使用net/url模块执行您想要的所有网址编码。它不会为URL的各个部分分解单独的编码函数,您必须让它构建整个URL。在看了一下源代码之后,我认为它做得非常好,符合标准。

下面是一个示例(playground link)

代码语言:javascript
复制
package main

import (
    "fmt"
    "net/url"
)

func main() {

    Url, err := url.Parse("http://www.example.com")
    if err != nil {
        panic("boom")
    }

    Url.Path += "/some/path/or/other_with_funny_characters?_or_not/"
    parameters := url.Values{}
    parameters.Add("hello", "42")
    parameters.Add("hello", "54")
    parameters.Add("vegetable", "potato")
    Url.RawQuery = parameters.Encode()

    fmt.Printf("Encoded URL is %q\n", Url.String())
}

哪种打印

代码语言:javascript
复制
Encoded URL is "http://www.example.com/some/path/or/other_with_funny_characters%3F_or_not/?vegetable=potato&hello=42&hello=54"
票数 98
EN

Stack Overflow用户

发布于 2017-04-16 02:18:24

从Go 1.8开始,这种情况已经改变了。我们现在可以访问PathEscape,除了旧的QueryEscape来编码路径组件,以及非转义对应的PathUnescape

票数 9
EN

Stack Overflow用户

发布于 2015-02-09 18:46:24

为了模仿Javascript的encodeURIComponent(),我创建了一个字符串助手函数。

示例:将"My String"转换为"My%20String"

https://github.com/mrap/stringutil/blob/master/urlencode.go

代码语言:javascript
复制
import "net/url"

// UrlEncoded encodes a string like Javascript's encodeURIComponent()
func UrlEncoded(str string) (string, error) {
    u, err := url.Parse(str)
    if err != nil {
        return "", err
    }
    return u.String(), nil
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13820280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档