URL由来:

一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。比如,世界上有英文字母的网址 “http://www.abc.com”,但是没有希腊字母的网址“http://www.aβγ.com”(读作阿尔法-贝塔-伽玛.com)。这是 因为网络标准RFC 1738 做了硬性规定:

"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."

“只有字母和数字[0-9a-zA-Z]、一些特殊符号“$-_.+!*'(),”[不包括双引号]、以及某些保留字,才可以不经过编码直接用于 URL。”

这意味着,如果URL中有汉字,就必须编码后使用。但是麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致“URL编码”成为了一个混乱的领域。

下面就让我们看看,“URL编码”到底有多混乱。我会依次分析四种不同的情况,在每一种情况中,浏览器的URL编码方法都不一样。把它们的差异解释 清楚之后,我再说如何用Javascript找到一个统一的编码方法。

具体代码如下:(切记切记,一定要注意编码)

package com.util;import java.io.UnsupportedEncodingException;
/*** url转码、解码** @author lifq * @date 2015-3-17 下午04:09:35*/
public class UrlUtil {private final static String ENCODE = "GBK"; /*** URL 解码** @return String* @author lifq* @date 2015-3-17 下午04:09:51*/public static String getURLDecoderString(String str) {String result = "";if (null == str) {return "";}try {result = java.net.URLDecoder.decode(str, ENCODE);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/*** URL 转码** @return String* @author lifq* @date 2015-3-17 下午04:10:28*/public static String getURLEncoderString(String str) {String result = "";if (null == str) {return "";}try {result = java.net.URLEncoder.encode(str, ENCODE);} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/*** * @return void* @author lifq* @date 2015-3-17 下午04:09:16*/public static void main(String[] args) {String str = "测试1";System.out.println(getURLEncoderString(str));System.out.println(getURLDecoderString(str));}}

限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。

资料传送门:https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

关注下方公众号即可免费领取:

转载于:https://www.cnblogs.com/haha12/p/4344992.html

java实现url转码、解码相关推荐

  1. JAVA中url的特殊字符处理及url转码解码

    在url中 , 只能使用url合法的字符 . 如果使用了非法字符来访问某资源(如:+#等) , 就会导致资源访问异常或失败 . 同时原生url中也是不支持中文的 , 以百度为例 , 当你搜索了中文关键 ...

  2. 关于C#(生僻字、繁体字)和Java的URL转码GBK后结果不一样的问题解决

    业务背景: 服务端是用Java写的,客户端的是使用C#写的,他们交互以客户端以http协议方式请求服务端,http请求方式要求URL转码为GBK.但是后来发现,服务端收到客户端提交的GBK字符,偶尔会 ...

  3. java qlv转mp4 代码_Java实用工具类五:URL转码、解码类

    package com.cn.hnust.util; import java.io.UnsupportedEncodingException; import java.util.HashMap; im ...

  4. Java实用工具类五:URL转码、解码类

    此文仅对自己工作中用到的类进行总结,方便以后的使用. package com.cn.hnust.util;import java.io.UnsupportedEncodingException; im ...

  5. java URL 转码和解码

    java URL 转码和解码 . 代码部分: String str = URLEncoder.encode("世界", "UTF-8"); System.out ...

  6. java url转码

    url在线转码 接口请求url转码 package com.example.demo.util;import java.io.UnsupportedEncodingException; import ...

  7. java生成二维码扫描跳转到指定的路径URL

    java生成二维码扫描跳转到指定的路径URL 导入依赖 <dependency><groupId>com.google.zxing</groupId><art ...

  8. Java实现二维码编码与解码

    1.构建maven项目,导入对应依赖 这里引用谷歌的zxing包实现二维码的编码与解码,导入依赖如下所示 <!-- 谷歌二维码 --> <dependency><grou ...

  9. Java对URL中的中文进行UrlEncode转码

    Java对URL中的中文进行UrlEncode urleocode只是为了url中一些非ascii字符,可以正确无误的被传输. 而且有的含有中文或者特殊字符的url不能被识别,因此需要进行Encode ...

  10. java处理url中的特殊字符%等

    java处理url中的特殊字符(如&,%...) URL(Uniform Resoure Locator,统一资源定位器)是Internet中对资源进行统一定位和管理的标志. 一个完整的URL ...

最新文章

  1. python 之路,Day11 (下)- sqlalchemy ORM
  2. 业余无线电通信_登山与业余无线电的完美结合,便携式电台参加VHF比赛心得体会...
  3. 【Flutter】Dart 面向对象 ( 抽象类 | 抽象方法 )
  4. Android基础(八) – Service AIDL
  5. boost::geometry::srs::projection用法的测试程序
  6. mysql评论表结构设计_文章评论嵌套显示mysql表结构如何设计(形式如网易新闻评论)...
  7. 字符串数组判断数字,字母汉字,
  8. django2.1支持的mysql版本_一文解决django 2.2与mysql兼容性问题
  9. Solidity 0.5 address payable和address的区别是什么?
  10. qpython3第三方库_Python第三方库的安装 --Python3
  11. ios plist_iOS属性列表(plist)示例
  12. 《面向模式的软件体系结构1--模式系统》读书笔记(7)--- 通信
  13. error: expected constructor, destructor, or typ...
  14. 数据库学习笔记2-隔离等级 isolation level
  15. CTRL+ALT快捷键汇总
  16. 计算机键盘操作指法 考试题,计算机键盘指法练习图计算机键盘指法练习介绍...
  17. android对接大华条码秤实例
  18. 计算机文件右击怎么显示打开方式,怎么删除Win10文件右键菜单打开方式中已卸载程序选项?...
  19. 抖音养号教程技巧,做抖音怎么养号上热门
  20. 谁是 GameFi 3 月最大的赢家| March Monthly Report

热门文章

  1. java程序设计实验指导书_java程序设计实验指导书-my
  2. anaconda装完没反应
  3. Caffe傻瓜系列(5):Blob,Layer and Net以及对应配置文件的编写
  4. 神经网络入门之RNN(三)
  5. gvdp哪个工厂用_ppr铝塑管和ppr水管哪个更适合家装?
  6. jQuery(3)——如何绑定事件
  7. linux shell su root失败
  8. 复习-java运行的整个流程
  9. centos 6.5 编译php mysql5.6_CentOS6.5 编译安装PHP5.6(apache模块)
  10. mysql test 映射到实体_第80天:Python 操作 MySQL