Java之URLEncoder、URLDecoder、Base64编码与解码方式
URLEncoder、URLDecoder、Base64编码与解码
1. URL
主要用来http get请求url不能传输中文参数问题。
http请求是不接受中文参数的
1.1 URLEncoder编码
使用指定的编码机制将字符串转换为 application/x-www-form-urlencoded 格式
对String编码时,使用以下规则:
- 字母数字字符 “a” 到 “z”、“A” 到 “Z” 和 “0” 到 “9” 保持不变。
- 特殊字符 “.”、"-"、"*" 和 "_"保持不变。
- 空格字符 " " 转换为一个加号 “+”。
- 所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy"表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。
1.2 URLDecoder解码
使用指定的编码机制对 application/x-www-form-urlencoded 字符串解码。
1.3 举例
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "编码测试+-./&=a=1*%123";
String charset = "utf-8";
System.out.println("urlEncoder编码数据: " + str);
String encode = URLEncoder.encode(str, charset);
System.out.println("编码结果: " + encode);
String decode = URLDecoder.decode(encode, charset);
System.out.println("解码结果: " + decode);
}
urlEncoder编码数据: 编码测试+-./&=a=1*%123
编码结果: %E7%BC%96%E7%A0%81%E6%B5%8B%E8%AF%95%2B-.%2F%26%3Da%3D1*%25123
解码结果: 编码测试+-./&=a=1*%123
2. Base64
在网络中传输数据都是使用ascii方式传输。对于一些图片、视频等数据,可能就会被编码成ascii中不可见部分的编码。
网络中不同的路由设备处理方式不同,有可能就会把这部分数据弄丢了。
为了保证数据传输的正确性,可以使用Base64编码将这些不可见数据编码成可见数据。
由于某些系统中只能使用ASCII字符。Base64就是用来将非ASCII字符的数据转换成ASCII字符的一种方法
2.1 Base64编码
Base64.getEncoder().encode(str.getBytes())
2.2 Base64解码
Base64.getDecoder().decode(encode)
2.3 举例
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "编码测试+-./&=a=1*%123";
String charset = "utf-8";
System.out.println("base64编码数据: " + str);
String encode = new String(Base64.getEncoder().encode(str.getBytes()));
System.out.println("编码结果: " + encode);
String decode = new String(Base64.getDecoder().decode(encode));
System.out.println("解码结果: " + decode);
}
base64编码数据: 编码测试+-./&=a=1*%123
编码结果: 57yW56CB5rWL6K+VKy0uLyY9YT0xKiUxMjM=
解码结果: 编码测试+-./&=a=1*%123
Java项目中遇到URLEncoder URLDecoder编码解码问题
做项目遇到的问题
就是获取cookie中的用户Id

1.我的用户id是用base64Encode加码
如下:

2.构建需要返回给客户端的用户对象

3.base64Encode解码失败,获取不到用户ID,为空

4.原因是前端传过来的用户ID有什么的字符号不能识别,所以需要转码

5.这时候就要用到URLDecoder.decode编码解码
userIdString = URLDecoder.decode (userIdString, "UTF-8");
转码成功了,拿到值了

URLEncoder URLDecoder作用解释
- URLDecoder类包含一个decode(String s,String enc)静态方法,它可以将application/x-www-form-urlencoded MIME字符串转成普通字符串;
- URLEncoder类包含一个encode(String s,String enc)静态方法,它可以将普通字符串转换成application/x-www-form-urlencoded MIME字符串。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java报错:Java.io.FileNotFoundException解决方法
这篇文章主要介绍了Java.io.FileNotFoundException的产生原因和解决方法,造成这个报错的原因可能有文件路径错误、文件被删除或移动和权限问题,文中将解决的办法介绍的非常详细,需要的朋友可以参考下2024-12-12
Java使用IntelliJ IDEA连接MySQL的详细教程
这篇文章主要给大家介绍了关于Java使用IntelliJ IDEA连接MySQL的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04
JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)
这篇文章主要介绍了如何在IntelliJ IDEA 2020.1中创建和部署一个Java Web项目,包括创建项目、配置Tomcat服务器、连接MySQL数据库以及添加JDBC驱动包,文中通过图文介绍的非常详细,需要的朋友可以参考下2025-12-12
Java中Velocity快速对变量中的引号特殊字符进行转义
Velocity是一个基于Java的模板引擎,与Freemarker类似,这篇文章主要介绍了Java中Velocity如何对变量中的引号特殊字符进行转义,主要记录一下在使用中碰到的要对引号特殊字符进行转义的问题,需要的朋友可以参考下2023-07-07
Spring组件初始化扩展点BeanPostProcessor的作用详解
本文通过实战案例和常见应用场景详细介绍了BeanPostProcessor的使用,并强调了其在Spring扩展中的重要性,感兴趣的朋友一起看看吧2025-03-03


最新评论