博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现url转码、解码
阅读量:4326 次
发布时间:2019-06-06

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

URL由来:

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

"...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等高并发分布式、大数据、机器学习等技术。

 

资料传送门:

 

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

 

Java碎碎念公众号

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

你可能感兴趣的文章
单工、半双工和全双工的定义
查看>>
Hdu【线段树】基础题.cpp
查看>>
时钟系统
查看>>
BiTree
查看>>
5个基于HTML5的加载动画推荐
查看>>
水平权限漏洞的修复方案
查看>>
静态链接与动态链接的区别
查看>>
Android 关于悬浮窗权限的问题
查看>>
如何使用mysql
查看>>
linux下wc命令详解
查看>>
敏捷开发中软件测试团队的职责和产出是什么?
查看>>
在mvc3中使用ffmpeg对上传视频进行截图和转换格式
查看>>
python的字符串内建函数
查看>>
Spring - DI
查看>>
微软自己的官网介绍 SSL 参数相关
查看>>
Composite UI Application Block (CAB) 概念和术语
查看>>
ajax跨域,携带cookie
查看>>
阶段3 2.Spring_01.Spring框架简介_03.spring概述
查看>>
阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
查看>>
阶段3 2.Spring_01.Spring框架简介_04.spring发展历程
查看>>