Sus partes componentes, que contienen caracteres potencialmente que debe ser escapado, ya deberían haberse escapado utilizando URLEncoder antes de ser concatenados en un URI.
Si tiene un URI con caracteres fuera de banda (como espacio, "<> [] {} \ | ^` y bytes no ASCII), no es realmente un URI. Puede intentar arréglelos manualmente, escórrelos, pero esta es una operación de reparación de última hora y no una forma estándar de codificación. Esto suele ser necesario cuando acepta URI potencialmente malformados a partir de la entrada del usuario, pero no es una norma estandarizada. operación y no sé de ninguna función incorporada de la biblioteca Java que lo haga por usted, puede que tenga que hackear algo usted mismo con un RegExp.
En la otra dirección, debe tomar su URI aparte en sus partes componentes (cada parte de ruta separada, nombre y valor de parámetro de consulta, etc.) antes de que pueda deshacer el diseño de cada parte (utilizando un URLDecoder). No hay una forma sensata de codificar% un URI completo de una vez; podría intentar 'decodificar% -escapes que no decodifiquen a delimitadores' (como /? = &;%), pero le quedaría una cadena extraña e incoherente que no se ajusta a ningún estándar de procesamiento de URI.
URLEncoder/URLDecoder están muy bien para el manejo de componentes de consulta URI, ambos nombres y valores. Sin embargo, no son bastante adecuado para el manejo de componentes de la pieza de ruta URI. La diferencia es que el carácter '+' no significa un espacio en una parte de ruta. Puede solucionar esto con una simple sustitución de cadena: después de URLEncoding, reemplace '+' con '% 20'; antes de URLDecoding, reemplace '+' con '% 2B'. Puede ignorar la diferencia si no planea incluir segmentos que contengan espacios o más en su ruta.
no es application/www-form-x-urlencoded la misma cosa? –
No, no lo es. La codificación RFC2396 no es lo mismo que la codificación para datos de formularios HTML. – Gili
Ver http://stackoverflow.com/questions/444112/how-do-i-encode-uri-parameter-values Hay pocas respuestas. –