Java Script Character Encoding and Decoding
By Stephen Bucaro
You may have already discovered that the address bar in your web browser won't
accept a character string with a space in it. To get the character string to
work, you need to replace the space with something. That something is the
hexadecimal code for a space %20.
In addition to not accepting spaces, other characters have meaning in a
URL (Uniform Resource Locator). For example a question mark needs to be replaced
with %3F, an ampersand needs to be replaced with %26, and an equal sign needs
to be replaced with %3D.
Fortunately, you don't have to perform these replacements manually, Java Script
provides several functions that will automatically replace the necessary
characters in a string with their hexadecimal code equivalents. The Java Script
escape function returns a string with all spaces and non-alphanumeric
characters replaced with their hexadecimal code equivalents.
Click on the link below to see an example.
escape('!@#$%^&*(){}[]=:;?+./')
The escape function was designed for URLs (addresses to web resources).
The W3C now views the Web as a set of named objects accessed by URIs (Uniform
Resource Identifier). Some object names use characters that are escaped by the
escape function, so in Java Script 1.5 (ECMAScript 3.0) and higher, the
escape function has been deprecated in favor of the encodeURI function.
Java Script 1.5 also provides the encodeURIComponent function, which
can be used to encode part of a URI. For example, if you created an identifier
containing a slash, neither the escape function nor the encodeURI
will encode slashes because they are a legal characters in a URL or URI.
You could encode it with the encodeURIComponent function, But you
wouldn't use the encodeURIComponent function to encode an entire URI
because it would replace the directory delimiter slashes with their hexadecimal
code equivalents.
Which to use; encodeURI, encodeURIComponent, or escape?
escape does not encode these characters: @*/+. Since the + and . characters
have meaning in a URI, escape is not useful for encoding URIs. encodeURI does
not encode these characters: !@#$&*()=:/;?+' Since the & + and ? characters are
used in query strings, encodeURI is not useful for encoding URLs.
Click on the link below to see an example.
encodeURI('!@#$%^&*(){}[]=:;?+./')
|