java中的URLEncoder encode / URLDecoder解码(Android)

我想在应用程序中使用URLEncoder / URLDecoder类(java.net.URLEncoder / URLDecoder),并使用encode(String s,String enc)/ decode(String s,String enc),但我不知道可以是String参数的值enc? 我想在“x-www-form-urlencoded”MIME内容types中进行编码/解码。 感谢您的帮助。

Solutions Collecting From Web of "java中的URLEncoder encode / URLDecoder解码(Android)"

编码参数是您正在使用的字符编码。 For example "UTF-8"

首先,您需要将内容types设置为“x-www-form-urlencoded”。 然后,无论您想要编码的内容是什么,使用“UTF-8”进行编码。

例如:

将内容设置为“x-www-form-urlencoded”:

 URL url = new URL("http://www.xyz.com/SomeContext/SomeAction"); <br> URLConnection urlConnection = url.openConnection();<br> ....<br> ....<br> urlConnection.setRequestProperty("Content-type","application/x-www-form-urlencoded"); 

或者,如果您使用的是JSP,那么您可以在其上面写入以下内容。

 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><br> < META http-equiv="Content-Type" content="text/html; charset=UTF-8"> < FORM action="someaction.jsp" enctype="application/x-www-form-urlencoded" name="InputForm" method="POST"> 

并使用URLEncoder:

 String encodedString = URLEncoder.encode("hello","UTF-8"); 

JavaDoc有所有的细节

URLEncoderURLDecoder都是exceptionThrowable ,因此必须至less被try / catch块封闭。 然而,使用android.net.Uri有一个简单的方法:

 Uri.decode(string); Uri.encode(string); 

这些都是静态方法,使用utf-8,从API-1开始并没有引发exception。

我个人最喜欢的:

 static String baseNameFromURL(URL url) { String shortName; String path = url.getPath(); String escaped = path.substring(path.lastIndexOf('/') + 1); try { shortName = URLDecoder.decode(escaped, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new Error(e.getMessage(), e); } int period = shortName.lastIndexOf('.'); return period > -1 ? shortName.substring(0, period) : shortName; } 

如果URL没有文件名部分,则返回空string,如https://stackoverflow.com/https://stackoverflow.com/questions/ 。 如果文件名部分有反斜杠,则保留。

如果您需要带扩展名的短名称,则可以去掉最后两行。