8000 Percent encoding needs 0-padding if less than 2 digits · Issue #12 · fxa/uritemplate-js · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Percent encoding needs 0-padding if less than 2 digits #12
Open
@pfrazee

Description

@pfrazee

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0