Open
Description
Discovered on Chrome 26.0.1410.65, OSX 10.8.
Some character codes (eg "\n") produce hex values which are less than "F" (eg "%A") which creates an error when decoded by the browser (it expects "%0A").
To reproduce this issue:
decodeURIComponent(UriTemplate.parse('http://whatever.com{?q}').expand({q:"foo\nbar"}));
A simple fix:
function pad0(v) {
if (v.length > 1) return v;
return '0'+v;
}
/**
* encodes a character, if needed or not.
* @param chr
* @return pct-encoded character
*/
function encodeCharacter (chr) {
var
result = '',
octets = utf8.encode(chr),
octet,
index;
for (index = 0; index < octets.length; index += 1) {
octet = octets.charCodeAt(index);
result += '%' + pad0(octet.toString(16).toUpperCase());
}
return result;
}
Metadata
Metadata
Assignees
Labels
No labels