#escaping #url #urlencode #encode-decode #encode #decode #character-encoding

url-escape

This library is for encoding/escaping special characters in URLs and decoding/unescaping URLs as well

2 releases

0.1.1 Mar 19, 2022
0.1.0 Apr 21, 2021

#1497 in Encoding

Download history 9126/week @ 2024-11-19 9101/week @ 2024-11-26 9399/week @ 2024-12-03 8781/week @ 2024-12-10 8113/week @ 2024-12-17 3635/week @ 2024-12-24 4619/week @ 2024-12-31 8153/week @ 2025-01-07 8440/week @ 2025-01-14 8246/week @ 2025-01-21 9740/week @ 2025-01-28 9974/week @ 2025-02-04 10192/week @ 2025-02-11 10065/week @ 2025-02-18 8504/week @ 2025-02-25 7570/week @ 2025-03-04

37,988 downloads per month
Used in 59 crates (34 directly)

MIT license

18KB
219 lines

URL Escape

CI

This library is for encoding/escaping special characters in URLs and decoding/unescaping URLs as well.

Usage

Encoding

This crate provides some encode_* functions to encode URL text in different situations.

For example, to put a text to a fragment, use the encode_fragment function.

assert_eq!("a%20%3E%20b?", url_escape::encode_fragment("a > b?"));

The functions suffixed with _to_writer, _to_vec or _to_string are useful to generate URL text.

let mut url = String::from("https://");
assert_eq!("admin%40example.com", url_escape::encode_userinfo_to_string("admin@example.com", &mut url));
url.push_str("@127.0.0.1/");
assert_eq!("%E4%B8%AD%E6%96%87%E5%AD%97/eng/12%2034", url_escape::encode_path_to_string("中文字/eng/12 34", &mut url));
url.push('/');
assert_eq!(r"56%2F78", url_escape::encode_component_to_string("56/78", &mut url));
url.push('?');
assert_eq!(r"a=1&b=a%20b%20c", url_escape::encode_query_to_string("a=1&b=a b c", &mut url));

assert_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);

Decoding

assert_eq!("中文字/eng/12 34", url_escape::decode("%E4%B8%AD%E6%96%87%E5%AD%97/eng/12%2034"));

Crates.io

https://crates.io/crates/url-escape

Documentation

https://docs.rs/url-escape

License

MIT

Dependencies

~13KB