diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-07-22 18:03:47 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-07-22 18:03:47 +0000 |
commit | 5cbd2c085373e4bddccb0abaf122fc9e3fd8c199 (patch) | |
tree | 7c8d07d8b9a81404f77eabdd2d2018b1c23f600e | |
parent | bf081bcdd513de7c34862045d8c3ae12d10185bf (diff) | |
download | gcc-5cbd2c085373e4bddccb0abaf122fc9e3fd8c199.tar.gz |
* java/net/URLEncoder.java (encode(String)): Use platform default
encoding.
(encode(String,String)): Convert to 2-digit upper-case hex
number.
(hex): New field.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@69678 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/java/net/URLEncoder.java | 27 |
2 files changed, 28 insertions, 7 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index c6de2971303..66e3f6662ed 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2003-07-22 Tom Tromey <tromey@redhat.com> + + * java/net/URLEncoder.java (encode(String)): Use platform default + encoding. + (encode(String,String)): Convert to 2-digit upper-case hex + number. + (hex): New field. + 2003-07-21 Thomas Fitzsimmons <fitzsim@redhat.com> * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c diff --git a/libjava/java/net/URLEncoder.java b/libjava/java/net/URLEncoder.java index f03b8a1d8f8..24d0d25b6d8 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 |