'#' is a URI delimiter symbol

This commit is contained in:
Veloman Yunkan 2023-01-17 19:17:26 +04:00
parent e49081da80
commit 82d477009d
2 changed files with 5 additions and 5 deletions

View File

@ -177,6 +177,7 @@ bool isReservedUrlChar(char c)
case '=':
case '+':
case '$':
case '#':
return true;
default:
return false;

View File

@ -111,10 +111,9 @@ namespace URLEncoding
const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char digits[] = "0123456789";
const char nonEncodableSymbols[] = ".-_~()*!";
const char uriDelimSymbols[] = ":/@?=+&$;,";
const char uriDelimSymbols[] = ":/@?=+&#$;,";
// XXX: # should belong to uriDelimSymbols!
const char otherSymbols[] = R"(`#%^[]{}\|"<>)";
const char otherSymbols[] = R"(`%^[]{}\|"<>)";
const char whitespace[] = " \n\t\r";
@ -136,9 +135,9 @@ TEST(stringTools, urlEncode)
EXPECT_EQ(urlEncode(nonEncodableSymbols, true), nonEncodableSymbols);
EXPECT_EQ(urlEncode(uriDelimSymbols), uriDelimSymbols);
EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%2F%40%3F%3D%2B%26%24%3B%2C");
EXPECT_EQ(urlEncode(uriDelimSymbols, true), "%3A%2F%40%3F%3D%2B%26%23%24%3B%2C");
EXPECT_EQ(urlEncode(otherSymbols), "%60%23%25%5E%5B%5D%7B%7D%5C%7C%22%3C%3E");
EXPECT_EQ(urlEncode(otherSymbols), "%60%25%5E%5B%5D%7B%7D%5C%7C%22%3C%3E");
EXPECT_EQ(urlEncode(otherSymbols), urlEncode(otherSymbols, true));
EXPECT_EQ(urlEncode(whitespace), "%20%0A%09%0D");