Encode a URI path
// // Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // /** * URI Holder. This class assists with the decoding and encoding or HTTP URI's. * It differs from the java.net.URL class as it does not provide communications * ability, but it does assist with query string formatting. * <P> * UTF-8 encoding is used by default for % encoded characters. This may be * overridden with the org.mortbay.util.URI.charset system property. * * @see UrlEncoded * @author Greg Wilkins (gregw) */publicclass Utils { /* ------------------------------------------------------------ *//** * Encode a URI path. * * @param path * The path the encode * @param buf * StringBuffer to encode path into (or null) * @return The StringBuffer or null if no substitutions required. */publicstatic StringBuffer encodePath(StringBuffer buf, String path) { if (buf == null) { loop: for (int i = 0; i < path.length(); i++) { char c = path.charAt(i); switch (c) { case'%': case'?': case';': case'#': case' ': buf = new StringBuffer(path.length() << 1); break loop; } } if (buf == null) return null; } synchronized (buf) { for (int i = 0; i < path.length(); i++) { char c = path.charAt(i); switch (c) { case'%': buf.append("%25"); continue; case'?': buf.append("%3F"); continue; case';': buf.append("%3B"); continue; case'#': buf.append("%23"); continue; case' ': buf.append("%20"); continue; default: buf.append(c); continue; } } } return buf; } }
Related examples in the same category