URL在公共Lisp中解码字符串

URL在公共Lisp中解码字符串,url,common-lisp,drakma,Url,Common Lisp,Drakma,我有一个包含转义URL的字符串: http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz 我试图将其解码为以下内容: http://example.com?foo=bar+baz > uri_string = "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz" => "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz" > URI.decode uri_string =>

我有一个包含转义URL的字符串:

http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz
我试图将其解码为以下内容:

http://example.com?foo=bar+baz
> uri_string = "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz"
 => "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz" 
> URI.decode uri_string
 => "http://example.com?foo=bar+baz" 
但是,我找不到任何适合Drakma导出的函数。我可以这样编码:

* url-string

"http://example.com?foo=bar+baz"
* (drakma:url-encode url-string :utf-8)

"http%3A%2F%2Fexample.com%3Ffoo%3Dbar%2Bbaz"
。。。所以我想我走对了方向。如果有人能提供一个正确的方向,我将不胜感激:-)我正在使用SBCL 1.0.54,它是从64位Linux Mint 13上的源代码构建的

如果这有助于澄清我在Ruby中要做的事情,我会做以下几点:

http://example.com?foo=bar+baz
> uri_string = "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz"
 => "http%3A%2F%2Fexample.com%3Ffoo%3Dbar+baz" 
> URI.decode uri_string
 => "http://example.com?foo=bar+baz" 
快速的粘液治疗

CL-USER> (ql-dist:system-apropos "url")

#<SYSTEM curly / curly-20120407-git / quicklisp 2012-05-20>
#<SYSTEM curly.test / curly-20120407-git / quicklisp 2012-05-20>
#<SYSTEM do-urlencode / do-urlencode-20120407-git / quicklisp 2012-05-20>
#<SYSTEM url-rewrite / url-rewrite-0.1.1 / quicklisp 2012-05-20>

CL-USER> (ql:quickload :do-urlencode)

找到了另一个解决方案,具有一个uri处理库,其中包含编码和解码实用程序(用于uri和参数):

使用
(ql:quickload:quri)
安装,然后选择
(使用软件包:quri)


(我的资料来源:和)。

如果你想知道,我知道转义整个URL(包括协议规范)是非常奇怪的。我正在尝试为一家澳大利亚在线音乐商店编写一个跨平台下载客户端,该商店提供包含完全转义URL列表的文件,如上面的示例所示。仅仅问一个明显的问题:(apropos“DECODE”)没有显示任何有趣的功能?(关于“DECODE”“DRAKMA”)?谢谢:-)我仍在学习做事的“Lisp方式”。。。我从来没有想过,可能有一种方法可以从REPL获得有关Quicklisp包的帮助。