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

10

我是使用Go语言的Revel框架。最近,当我运行以下代码时:

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

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

I get

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)"的go代码是在fmt包中,但从查看net/url源码包的代码来看,我不知道这是怎么发生的。我是否可能访问了旧版本(或有问题的版本)的go库?我的设置可能还存在其他问题吗?
相关: 编码/解码URL 相关Go源代码:http://golang.org/src/pkg/net/url/url.go?s=14330:14361#L553

3
似乎 Revel 出现了故障,正在使用 Printf... - Volker
这甚至没有出现在我的脑海中。哇。我坐在这里重新安装一切,感觉相当愚蠢。:-P - Bjorn Roche
1个回答

7

revel.INFO.Println类似于fmt.Printf,它需要一个格式字符串和参数。如果要记录包含%字符的字符串,则需要对其进行转义或者更好的选择是将其作为参数传递:

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

您可以直接使用格式字符串"%s",但为什么不趁机提供一些上下文呢?

是的 - 听起来更像是 revel.INFO.Println 就像 Printf - twotwotwo
好的,抱歉。我会修正答案的。谢谢! - Daniel Darabos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接