URL转义生成"%A(MISSING)"而不是"%3A"

时间:2014-07-09 19:06:27

标签: url go revel

我正在使用带有go语言的revel框架。最近,当我运行以下代码时:

import (
    ...
    "net/url"
    ...
)

revel.INFO.Println(url.QueryEscape("http://hello.com"))

我得到了

INFO  2014/07/09 14:58:34 user.go:39: http%A(MISSING)%F(MISSING)%F(MISSING)hello.com

当我希望得到更像

的东西时
INFO  2014/07/09 14:58:34 user.go:39: http%3A%2F%2Fhello.com

为什么%3A已在输出中被%A(MISSING)替换,我该如何解决?

唯一的代码,我看到的东西可能会产生字符串"(MISSING)'在fmt包中,但是通过查看net/url源代码包,我不知道如何发生这种情况。我是否可能以某种方式访问​​go库的旧版本(并且已损坏?)?我的设置可能还有其他问题吗?

相关:Encode / decode URLs

相关Go源代码:http://golang.org/src/pkg/net/url/url.go?s=14330:14361#L553

1 个答案:

答案 0 :(得分:3)

revel.INFO.Printlnfmt.Printf类似,它需要格式字符串和参数。要记录包含%个字符的字符串,您需要将其转义,或者更好地将其作为参数传递:

revel.INFO.Println("The escaped URL is: %s", url.QueryEscape("http://hello.com"))

(您可以使用"%s"作为格式字符串,但为什么不抓住机会提供上下文。)