Skip to content

net/url: String() encodes slash character for file schemes to "%5C" #64872

@tomvladik

Description

@tomvladik

Go version

go1.21.5 windows/amd64

What operating system and processor architecture are you using (go env)?

set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\tomas.vladik\AppData\Local\go-build
set GOENV=C:\Users\tomas.vladik\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\tomas.vladik\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\tomas.vladik\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.5
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=C:\GIT_tom\Lyra\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\TOMAS~1.VLA\AppData\Local\Temp\go-build907150890=/tmp/go-build -gno-record-gcc-switches

What did you do?

I got piece of code like this:

absolutePath := "c:\test_data\INDEX"
fileURL := url.URL{
Scheme: "file",
Path: absolutePath,
}

url := fileURL.String()

What did you expect to see?

I expect to get url like "file://c:/test_data/INDEX"

What did you see instead?

"file://c:%5Ctest_data%5CINDEX"

which is not valid file URL, I have to use workaround like this

// workaround to get valid file URL
url := strings.Replace(fileURL.String(), "%5C", "/", -1)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions