diff options
author | Tom Tromey <tromey@redhat.com> | 2003-07-22 18:03:47 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2003-07-22 18:03:47 +0000 |
commit | c39603389e209f44cba9006f2546bb6e51ff2ec5 (patch) | |
tree | 7c8d07d8b9a81404f77eabdd2d2018b1c23f600e /libjava/java/net/URLEncoder.java | |
parent | 3988d1795135a31523dbbd0605ceecae16f2b718 (diff) | |
download | gcc-c39603389e209f44cba9006f2546bb6e51ff2ec5.zip gcc-c39603389e209f44cba9006f2546bb6e51ff2ec5.tar.gz gcc-c39603389e209f44cba9006f2546bb6e51ff2ec5.tar.bz2 |
URLEncoder.java (encode(String)): Use platform default encoding.
* java/net/URLEncoder.java (encode(String)): Use platform default
encoding.
(encode(String,String)): Convert to 2-digit upper-case hex
number.
(hex): New field.
From-SVN: r69678
Diffstat (limited to 'libjava/java/net/URLEncoder.java')
-rw-r--r-- | libjava/java/net/URLEncoder.java | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/libjava/java/net/URLEncoder.java b/libjava/java/net/URLEncoder.java index f03b8a1..24d0d25b 100644 --- a/libjava/java/net/URLEncoder.java +++ b/libjava/java/net/URLEncoder.java @@ -1,5 +1,5 @@ /* URLEncoder.java -- Class to convert strings to a properly encoded URL - Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -53,7 +53,8 @@ import java.io.UnsupportedEncodingException; * US alphabet remain as is, the space character (' ') is replaced with * '+' sign, and all other characters are converted to a "%XX" format * where XX is the hexadecimal representation of that character in a - * certain encoding (by default "UTF-8"). + * certain encoding (by default, the platform encoding, though the + * standard is "UTF-8"). * <p> * This method is very useful for encoding strings to be sent to CGI scripts * @@ -65,8 +66,9 @@ public class URLEncoder { /** * This method translates the passed in string into x-www-form-urlencoded - * format using the standard "UTF-8" character encoding to hex-encode the - * unsafe characters. + * format using the default encoding. The standard encoding is + * "UTF-8", and the two-argument form of this method should be used + * instead. * * @param s The String to convert * @@ -78,11 +80,13 @@ public class URLEncoder { try { - return encode(s, "UTF-8"); + // We default to 8859_1 for compatibility with the same + // default elsewhere in the library. + return encode(s, System.getProperty("file.encoding", "8859_1")); } catch (UnsupportedEncodingException uee) { - // Should never happen since UTF-8 should always be supported + // Should never happen since default should always be supported return s; } } @@ -139,7 +143,9 @@ public class URLEncoder for (int j = 0; j < bytes.length; j++) { result.append('%'); - result.append(Integer.toHexString(((int) bytes[j]) & 0xFF)); + int val = bytes[j]; + result.append(hex.charAt((val & 0xf0) >> 4)); + result.append(hex.charAt(val & 0x0f)); } } start = i; @@ -166,4 +172,11 @@ public class URLEncoder */ private URLEncoder() { } + /** + * Used to convert to hex. We don't use Integer.toHexString, since + * it converts to lower case (and the Sun docs pretty clearly + * specify upper case here), and because it doesn't provide a + * leading 0. + */ + private static final String hex = "0123456789ABCDEF"; } // class URLEncoder |