Pregunta

¿Hay una clase para codificar un genérico? String ¿Después de la especificación RFC 3986?

Eso es: "hello world" => "hello%20world" No (RFC 1738): "hello+world"

Gracias

¿Fue útil?

Otros consejos

Si es una URL, use URI

URI uri = new URI("http", "//hello world", null);
String urlString = uri.toASCIIString();
System.out.println(urlString);

Fuente: Twitter RFC3986 Funciones de codificación compatibles.

Este método toma cadena y la convierte en una cadena codificada específica RFC3986.

/** The encoding used to represent characters as bytes. */
public static final String ENCODING = "UTF-8";

public static String percentEncode(String s) {
    if (s == null) {
        return "";
    }
    try {
        return URLEncoder.encode(s, ENCODING)
                // OAuth encodes some characters differently:
                .replace("+", "%20").replace("*", "%2A")
                .replace("%7E", "~");
        // This could be done faster with more hand-crafted code.
    } catch (UnsupportedEncodingException wow) {
        throw new RuntimeException(wow.getMessage(), wow);
    }
}

No sé si hay uno. Hay una clase que proporciona codificación pero cambia "" en "+". Pero puede usar el método ReplaceAll en la clase String para convertir el "+" en lo que desea.

str.Repaceall ("+", "%20")

En el caso de las aplicaciones web de primavera, pude usar esto:

http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/util/uricomponentsbuilder.html

UriComponentsBuilder.newInstance()
  .queryParam("KEY1", "Wally's crazy empôrium=")
  .queryParam("KEY2", "Horibble % sign in value")
  .build().encode("UTF-8") // or .encode() defaults to UTF-8

Devuelve la cadena

?KEY1=Wally's%20crazy%20emp%C3%B4rium%3D&KEY2=Horibble%20%25%20sign%20in%20value

Una verificación cruzada de uno de mis sitios favoritos muestra el mismo resultado, "porcentaje de codificación para URI". Me parece bien. http://rishida.net/tools/conversion/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top