你正在使用的Go版本是什么(go version
)?
$ go version
go version go1.13.4 linux/amd64
这个问题在最新版本中是否会重现?
是的
你正在使用什么操作系统和处理器架构(go env
)?
go env
输出
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/adele/.cache/go-build"
GOENV="/home/adele/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/adele/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/lib/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/lib/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build138708956=/tmp/go-build -gno-record-
gcc-switches"
你做了什么?
在某些情况下,维护字符是否编码是非常重要的(例如,引用对象存储解决方案时的通配符)。
如果解析URL时有空格,它将成功解析,但它将选择返回重新编码的字面路径,而不是原始路径。(意外行为)
如果URL完全安全地编码,它将成功解析,然后选择返回原始路径。(预期行为)
以下示例展示了这两种情况:
https://play.golang.org/p/IeAIos8Wbx-
当你期望看到什么时?
如果我大致等效(在这里两者都大致等效),我希望在字符串化时得到完整的原始路径。
你看到了什么?
相反,我得到了一个编码的字面路径,导致信息丢失。
1条答案
按热度按时间ttcibm8c1#
@bradfitz@rsc