为了账号安全,请及时绑定邮箱和手机立即绑定

“网络/网址”无法解析带有磅的网址

“网络/网址”无法解析带有磅的网址

Go
呼啦一阵风 2022-09-26 17:34:13
我有下一个代码。主要.go:package mainimport "fmt"import "net/url"func main() {    connString := "postgresql://postgres:password@192.168.1.10:5432/postgres"    parsedUrl, err := url.Parse(connString)    if err != nil {        fmt.Println(err)    }    fmt.Println("=")    fmt.Println(parsedUrl.User)    fmt.Println("=")}执行:$ go run main.go=postgres:password=到目前为止,一切顺利,您可以看到我们成功地获得了.当我更改其中有绑定的密码时,会出现问题。parsedUrl.Userpostgres:passwordpassword#connString := "postgresql://postgres:password#@192.168.1.10:5432/postgres"然后,再次运行它,它输出如下:==您可以看到代码无法获取 。它看起来在html中会被视为锚点,这是根本原因吗?postgres:password##总而言之,我的问题是:我如何修复我的代码来处理我在密码中的情况?#
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

是,表示片段#

解决这个问题的一种方法是转义角色:#

connString := fmt.Sprintf("postgresql://postgres:password%s@192.168.1.10:5432/postgres", url.PathEscape("#"))


parsedUrl, _ := url.Parse(connString)


fmt.Println(url.PathUnescape(parsedUrl.User.String()))

输出:


postgres:password# <nil>


查看完整回答
反对 回复 2022-09-26
?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以使用url.QueryEscape()



package main


import (

    "fmt"

    "net/url"

)


func main() {

    connString := `postgresql://postgres:` + url.QueryEscape(`password#`) + `@192.168.1.10:5432/postgres`

    xurl, err := url.Parse(connString)

    if err != nil {

        fmt.Println(err)

    }

    fmt.Println("=")


    fmt.Println(xurl.User.Username())

    fmt.Println(xurl.User.Password())

    fmt.Println("=")

}


查看完整回答
反对 回复 2022-09-26
  • 2 回答
  • 0 关注
  • 59 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信