Java编码时遇到的问题

本文介绍了Java中如何使用URLEncoder.encode和URLDecoder.decode方法进行字符串的编码与解码操作。特别关注了UTF-8编码,并针对编码过程中的特殊字符处理提供了实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java编码遇到的问题

在实际的项目中,由于有需求需要将string转换成UTF-8编码,之后再进行转码,在编码以及转码的时候出现了一些小问题,以此记录下

编码

在Java中使用URLEncoder.encode(String s, String enc);来进行编码。第一个代码你需要编码的字符串,第二个为你需要编码的类型。

比如可以这么使用:

String string ="无聊撸代码";
URLEncoder.encode(string , "UTF-8");

字符串为string ,编码的格式为:utf-8。

编码之后的是这样的

%E6%97%A0%E8%81%8A%E6%92%B8%E4%BB%A3%E7%A0%81

解码

在解码的时候用URLDecoder.decode(String s, String enc);参数的意思和编码是一致的。

比如可以这么使用:

URLDecoder.decode(string , "UTF-8");

将需要解码的字符串传入就可以了

编码时+变成空格

有时候bug总是无处不在,在编码的时候,当输入+时,在解码的时候,会变成空格。

解决方法
String sendBuf = str.replace("+", "%2B");
URLEncoder.encode(sendBuf, "UTF-8");

将其中的+号转换成%2B,因为+编码就是%2B

解码时遇到%报异常

当解码的时候,有单独的%就会报异常,看下图

类型转换异常错误

主要原因是% 在URL中是特殊字符,需要特殊转义一下,可以做一下处理

String url = str.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
URLDecoder.decode(url, "UTF-8");

str:为你的需要解码的字符串

编码的问题基本上就这些,后期有需要再增加新的内容,欢迎各位指出错误,共同进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿界新星蔡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值