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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月26日 13时03分30秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
El表达式
2019-04-29
springboot banner打印,控制台springboot图案怎么来的
2019-04-29
linux shell內建命令区分--type
2019-04-29
java--打印当前项目加载的jar包--getResources
2019-04-29
mybatis 学习记录(3)—— 动态 sql
2019-04-29
面试官:说说快速失败和安全失败是什么
2019-04-29
Java的final和static区别
2019-04-29
建立索引的好处
2019-04-29
java如何对ArrayList中对象按照该对象某属性排序
2019-04-29
今天碰到IE的一个问题, 两个IFRAME的问题
2019-04-29
js实现列表滚动
2019-04-29
WindowXP下PHP5开发环境配置 (转载)
2019-04-29
用java调用webservice接口
2019-04-29
jquery 横向柱形图
2019-04-29
log4j.xml输出日志调试过程
2019-04-29
<param name="wmode" value="transparent">
2019-04-29
myeclipse集成ant
2019-04-29
mysql show processlist命令 详解
2019-04-29