Not needed anymore.
This commit is contained in:
parent
9622366678
commit
deca565254
1 changed files with 0 additions and 126 deletions
|
@ -1,126 +0,0 @@
|
|||
/*
|
||||
* @(#)URLEncoder.java 1.12 98/07/01
|
||||
*
|
||||
* Copyright 1995-1998 by Sun Microsystems, Inc.,
|
||||
* 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is the confidential and proprietary information
|
||||
* of Sun Microsystems, Inc. ("Confidential Information"). You
|
||||
* shall not disclose such Confidential Information and shall use
|
||||
* it only in accordance with the terms of the license agreement
|
||||
* you entered into with Sun.
|
||||
*/
|
||||
|
||||
// Repackaged by Hannes Wallnoefer because this is the only way to
|
||||
// encode space as %20 (no, subclassing doesn't work here).
|
||||
|
||||
package helma.util;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.BitSet;
|
||||
|
||||
/**
|
||||
* The class contains a utility method for converting a
|
||||
* <code>String</code> into a MIME format called
|
||||
* "<code>x-www-form-urlencoded</code>" format.
|
||||
* <p>
|
||||
* To convert a <code>String</code>, each character is examined in turn:
|
||||
* <ul>
|
||||
* <li>The ASCII characters '<code>a</code>' through '<code>z</code>',
|
||||
* '<code>A</code>' through '<code>Z</code>', and '<code>0</code>'
|
||||
* through '<code>9</code>' remain the same.
|
||||
* <li>All other characters are converted into the 3-character string
|
||||
* "<code>%<i>xy</i></code>", where <i>xy</i> is the two-digit
|
||||
* hexadecimal representation of the lower 8-bits of the character.
|
||||
* </ul>
|
||||
*
|
||||
* @author Herb Jellinek
|
||||
* @version 1.12, 07/01/98
|
||||
* @since JDK1.0
|
||||
*/
|
||||
public class UrlEncoder {
|
||||
static BitSet dontNeedEncoding;
|
||||
static final int caseDiff = ('a' - 'A');
|
||||
|
||||
/* The list of characters that are not encoded have been determined by
|
||||
referencing O'Reilly's "HTML: The Definitive Guide" (page 164). */
|
||||
|
||||
static {
|
||||
dontNeedEncoding = new BitSet(256);
|
||||
int i;
|
||||
for (i = 'a'; i <= 'z'; i++) {
|
||||
dontNeedEncoding.set(i);
|
||||
}
|
||||
for (i = 'A'; i <= 'Z'; i++) {
|
||||
dontNeedEncoding.set(i);
|
||||
}
|
||||
for (i = '0'; i <= '9'; i++) {
|
||||
dontNeedEncoding.set(i);
|
||||
}
|
||||
// dontNeedEncoding.set(' '); /* removed to encode space as %20 */
|
||||
dontNeedEncoding.set('-');
|
||||
dontNeedEncoding.set('_');
|
||||
dontNeedEncoding.set('.');
|
||||
dontNeedEncoding.set('*');
|
||||
}
|
||||
|
||||
/**
|
||||
* You can't call the constructor.
|
||||
*/
|
||||
// private URLEncoder() { }
|
||||
|
||||
/**
|
||||
* Translates a string into <code>x-www-form-urlencoded</code> format.
|
||||
*
|
||||
* @param s <code>String</code> to be translated.
|
||||
* @return the translated <code>String</code>.
|
||||
* @since JDK1.0
|
||||
*/
|
||||
public static String encode(String s) {
|
||||
int maxBytesPerChar = 10;
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream(s.length());
|
||||
ByteArrayOutputStream buf = new ByteArrayOutputStream(maxBytesPerChar);
|
||||
OutputStreamWriter writer = new OutputStreamWriter(buf);
|
||||
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
int c = (int)s.charAt(i);
|
||||
if (dontNeedEncoding.get(c)) {
|
||||
if (c == ' ') {
|
||||
c = '+';
|
||||
}
|
||||
out.write(c);
|
||||
} else {
|
||||
// convert to external encoding before hex conversion
|
||||
try {
|
||||
writer.write(c);
|
||||
writer.flush();
|
||||
} catch(IOException e) {
|
||||
buf.reset();
|
||||
continue;
|
||||
}
|
||||
byte[] ba = buf.toByteArray();
|
||||
for (int j = 0; j < ba.length; j++) {
|
||||
out.write('%');
|
||||
char ch = Character.forDigit((ba[j] >> 4) & 0xF, 16);
|
||||
// converting to use uppercase letter as part of
|
||||
// the hex value if ch is a letter.
|
||||
if (Character.isLetter(ch)) {
|
||||
ch -= caseDiff;
|
||||
}
|
||||
out.write(ch);
|
||||
ch = Character.forDigit(ba[j] & 0xF, 16);
|
||||
if (Character.isLetter(ch)) {
|
||||
ch -= caseDiff;
|
||||
}
|
||||
out.write(ch);
|
||||
}
|
||||
buf.reset();
|
||||
}
|
||||
}
|
||||
|
||||
return out.toString();
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue