getArrayFromQuerystring was not properly decoding the name/value pairs it found in a URL, so if (for example) your URL contained "%3A", it would get double encoded to "%253A", instead of being decoded to ":" and then encoded back to "%3A" again.