diff options
-rw-r--r-- | Cargo.toml | 2 | ||||
-rw-r--r-- | src/codec.rs | 2 | ||||
-rw-r--r-- | src/uri.rs | 12 |
3 files changed, 14 insertions, 2 deletions
@@ -1,6 +1,6 @@ [package] name = "rhymuri" -version = "1.0.0" +version = "1.0.1" description = "Implementation of IETF RFC 3986, Uniform Resource Identifier (URI)" authors = ["Richard Walters <rwalters@digitalstirling.com>"] edition = "2018" diff --git a/src/codec.rs b/src/codec.rs index 22d9000..05fcee8 100644 --- a/src/codec.rs +++ b/src/codec.rs @@ -47,7 +47,7 @@ pub fn encode_element( .map(|ci| { match char::try_from(*ci) { Ok(c) if allowed_characters.contains(&c) => c.to_string(), - _ => format!("%{:X}", ci), + _ => format!("%{:02X}", ci), } }) .collect() @@ -1485,6 +1485,18 @@ mod tests { } #[test] + fn percent_encode_characters_with_two_digits_always() { + for ci in 0_u8..31_u8 { + let mut uri = Uri::default(); + uri.set_query(Some(vec![ci])); + assert_eq!( + uri.to_string(), + format!("?%{:02X}", ci) + ); + } + } + + #[test] fn set_illegal_schemes() { let test_vectors = [ "ab_de", |