Skip to main content

url_escape/
lib.rs

1/*!
2# URL Escape
3
4This library is for encoding/escaping special characters in URLs and decoding/unescaping URLs as well.
5
6## Usage
7
8### Encoding
9
10This crate provides some `encode_*` functions to encode URL text in different situations.
11
12For example, to put a text to a fragment, use the `encode_fragment` function.
13
14```rust
15assert_eq!("a%20%3E%20b?", url_escape::encode_fragment("a > b?"));
16```
17
18The functions suffixed with `_to_writer`, `_to_vec` or `_to_string` are useful to generate URL text.
19
20```rust
21let mut url = String::from("https://");
22assert_eq!("admin%40example.com", url_escape::encode_userinfo_to_string("admin@example.com", &mut url));
23url.push_str("@127.0.0.1/");
24assert_eq!("%E4%B8%AD%E6%96%87%E5%AD%97/eng/12%2034", url_escape::encode_path_to_string("中文字/eng/12 34", &mut url));
25url.push('/');
26assert_eq!(r"56%2F78", url_escape::encode_component_to_string("56/78", &mut url));
27url.push('?');
28assert_eq!(r"a=1&b=a%20b%20c", url_escape::encode_query_to_string("a=1&b=a b c", &mut url));
29
30assert_eq!("https://admin%40example.com@127.0.0.1/%E4%B8%AD%E6%96%87%E5%AD%97/eng/12%2034/56%2F78?a=1&b=a%20b%20c", url);
31```
32
33Use `encode_www_form_urlencoded` for form data and decode it with `decode_www_form_urlencoded`.
34
35```rust
36assert_eq!("a+b%2Bc", url_escape::encode_www_form_urlencoded("a b+c"));
37assert_eq!("a b+c", url_escape::decode_www_form_urlencoded("a+b%2Bc"));
38```
39
40### Decoding
41
42```rust
43assert_eq!("中文字/eng/12 34", url_escape::decode("%E4%B8%AD%E6%96%87%E5%AD%97/eng/12%2034"));
44```
45
46*/
47
48pub extern crate percent_encoding;
49
50mod decode;
51mod encode;
52
53pub use decode::*;
54pub use encode::*;