Fixed invalid urlencoding for '-' symbol

This commit is contained in:
Alex Zolotarev 2011-04-04 01:13:24 +01:00 committed by Alex Zolotarev
parent f0292cf05d
commit 2e5f1465d4
2 changed files with 5 additions and 1 deletions

View file

@ -15,7 +15,9 @@ UNIT_TEST(UrlEncode)
{
TEST_EQUAL(UrlEncode(""), "", ());
TEST_EQUAL(UrlEncode(" "), "%20", ());
TEST_EQUAL(UrlEncode("%% "), "%25%25%20", ());
TEST_EQUAL(UrlEncode("20"), "20", ());
TEST_EQUAL(UrlEncode("Guinea-Bissau"), "Guinea-Bissau", ());
TEST_EQUAL(UrlEncode(orig1), enc1, ());
TEST_EQUAL(UrlEncode(orig2), enc2, ());
TEST_EQUAL(UrlEncode(orig3), enc3, ());
@ -26,7 +28,9 @@ UNIT_TEST(UrlDecode)
{
TEST_EQUAL(UrlDecode(""), "", ());
TEST_EQUAL(UrlDecode("%20"), " ", ());
TEST_EQUAL(UrlDecode("%25%25%20"), "%% ", ());
TEST_EQUAL(UrlDecode("20"), "20", ());
TEST_EQUAL(UrlDecode("Guinea-Bissau"), "Guinea-Bissau", ());
TEST_EQUAL(UrlDecode(enc1), orig1, ());
TEST_EQUAL(UrlDecode(enc2), orig2, ());
TEST_EQUAL(UrlDecode(enc3), orig3, ());

View file

@ -78,7 +78,7 @@ inline string UrlEncode(string const & rawUrl)
for (size_t i = 0; i < result.size(); ++i)
{
char const c = result[i];
if (c < '.' || c == '/' || (c > '9' && c < 'A') || (c > 'Z' && c < '_')
if (c < '-' || c == '/' || (c > '9' && c < 'A') || (c > 'Z' && c < '_')
|| c == '`' || (c > 'z' && c < '~') || c > '~')
{
string hexStr("%");