URLDecoder和URLEncoder详解
发布日期:2021-06-28 19:37:32 浏览次数:2 分类:技术文章

本文共 2242 字,大约阅读时间需要 7 分钟。

 URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencoded MIME字符串之间的转换

 URLDecoder类包含一个decode(String s,String charcter)静态方法,它可以将看上去乱码的特殊字符串转换成普通字符串

 URLEncoder类包含一个encode(String s,String charcter)静态方法,它可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串

  //将application/x-www-form-urlencoded字符串转换成普通字符串

  String keyWord = URLDecoder.decode("%CD%F8%C2%E7%CA%B1%BF%D5", "UTF-8");
  //将普通字符串转换成application/x-www-form-urlencoded字符串
  String urlStr = URLEncoder.encode("网络时空" , "UTF-8");

实战

由于后台传给我的视频播放地址有中文,我需要将带中文字段转成application/x-www-form-urlencoded字符串

/**     * @author Longchengbin     * @description 将网址反斜杠转成正斜杠并将中文转为16进制字符     **/    public static String decode(String url) {        String[] strings = url.split("\\\\");        String s1 = strings[strings.length - 1];        String s2 = strings[strings.length - 3];        String s = "";        try {            //将反斜杠替换成正斜杠            s = url.replaceAll("\\\\", "/").                    //将中文转成16进制字符  replace(s1, URLEncoder.encode(s1, "utf-8")).replace(s2, URLEncoder.encode(s2, "utf-8"));        } catch (UnsupportedEncodingException e) {            LogUtils.e("网址转换报错:" + e.toString());        }        return s;    }

总结:
      当URL地址中仅包含普通非中文字符串和application/x-www-form-urlencoded MIME字符串无须转换,而包含中文字符串的普通字符串则需要转换,换句话说,也就是说URL地址中有"中文字符串"传递时,才会考虑用到上面提到的两个类,这样就可以将传递过来的中文接受后,再还原成原来的中文字符串.如不转换,则通过URL传递过来的中文字符中会变成乱码,无法还原了

通过遍历中文char遍历解决

/**	 * 将字符串中的中文进行编码	 * @return 返回字符串中汉字编码后的字符串	 */	private String cnToEncode(String s ){		char[] ch = s.toCharArray();		String result = "";		for(int i=0;i

 

/**	 * 判断字符是否为汉字	 * @param c	 * @return	 */	 private static boolean isChinese(char c) {	        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);	        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS	                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B	                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS	                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {	            return true;	        }	        return false;	  }

 

转载地址:https://blog.csdn.net/xxdw1992/article/details/110677639 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:解决split无法得到空字符串问题
下一篇:百度识别的调用

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 13时03分30秒