2012-07-02 5 views
3

I 이스케이프 된 URL이 포함 된 문자열이 : 그러나커먼 리스프에서 문자열을 URL-디코딩

http://example.com?foo=bar+baz 

, 내가 할 수

http%3A%2F%2Fexample.com%3Ffoo%3Dbar+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" 

: 나는 EN 코드과 같이 할 수 있습니다. 누구든지 올바른 방향으로 뉘앙스를 제공 할 수 있다면 나는 그것을 고맙게 생각할 것이다 :-) SBCL 1.0.54를 사용하고 있는데, 64 비트 Linux Mint 13 소스를 기반으로 구축되었다.

내가 무엇인지 명확히하는 데 도움이된다면 Ruby에서 다음을 수행하려고했습니다.

> 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" 
+0

궁금한 점이 있으시면 프로토콜 사양을 포함하여 _entire_ URL이 이스케이프 처리된다는 사실이 이상하다는 것을 알고 있습니다. 위의 예와 같이 완전히 이스케이프 된 URL 목록을 포함하는 파일을 제공하는 오스트레일리아 온라인 뮤직 스토어를위한 크로스 플랫폼 다운로드 클라이언트를 작성하려고합니다. –

+1

그냥 분명한 질문 : (apropos "디코 드") 어떤 흥미있는 기능을 보여주지 않습니까? ("DECODE" "DRAKMA"제안)? –

답변

11

빠른 SLIME 세션.

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) 

참조카드뮴Pdo-urlencodeRET 다른 용액 발견

DO-URLENCODE:URLDECODE 
    Function: (not documented) 
DO-URLENCODE:URLENCODE 
    Function: (not documented) 
DO-URLENCODE:URLENCODE-MALFORMED-STRING 
    Type: (not documented) 
DO-URLENCODE:URLENCODE-MALFORMED-STRING-STRING 
    Generic Function: (not documented) 

CL-USER> (do-urlencode:urldecode "http%3A%2F%2Fexample.com%3Ffoo%3Dbar%2Bbaz") 

"http://example.com?foo=bar+baz" 
+0

고마워 :-) 나는 아직도 일을하는 'Lisp 방식'을 배우고있다 ... REPL로부터 Quicklisp 패키지에 대한 도움을 얻을 수있는 방법이 있다는 것을 결코 알지 못했다. –

0

, Quri와, 부호화 및 복호화 (URI 및 파라미터) 유틸리티와 라이브러리를 취급 URI :

(url-decode "http%3A%2F%2Fexample.com%3Ffoo%3Dbar%2Bbaz") 
;; "http://example.com?foo=bar+baz" 

(ql:quickload :quri)으로 설치 한 다음 optionaly (use-package :quri)으로 설치하십시오.

(내 출처 : lisp-lang.org's recommend librariesawesone-cl).

관련 문제