purell should not normalize reserved characters, as per RFC3986:
reserved = gen-delims / sub-delims
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
package main
import (
"fmt"
"github.com/PuerkitoBio/purell"
)
func main() {
fmt.Println(purell.MustNormalizeURLString("my_(url)", purell.FlagsSafe))
}
The above code outputs my_%28url%29, whereas it should be my_(url). This is due to a bug in Go stdlib (issue 5684).