解决class.getResource()得到的URL中汉字变乱码以及URLDecoder把+号解码为空格的问题

  1. 汉字变乱码:
System.out.println(Main.class.getResource(""));
System.out.println(Main.class.getResource("/"));
System.out.println(URLDecoder.decode(Main.class.getResource("/").getPath(),"utf-8"));

输出结果:

file:/D:/%e5%9b%9bJava%e9%ab%98%e7%ba%a7-%e5%a4%a7%e5%88%80%e9%98%94%e6%96%a7-%e6%9c%8d%e5%8a%a1%e5%8c%96%e6%94%b9%e9%80%a0/subject-4/5-zookeeper/zookeeper-study/target/classes/com/study/mike/zookeeper/
file:/D:/%e5%9b%9bJava%e9%ab%98%e7%ba%a7-%e5%a4%a7%e5%88%80%e9%98%94%e6%96%a7-%e6%9c%8d%e5%8a%a1%e5%8c%96%e6%94%b9%e9%80%a0/subject-4/5-zookeeper/zookeeper-study/target/classes/
/D:/四Java高级-大刀阔斧-服务化改造/subject-4/5-zookeeper/zookeeper-study/target/classes/

参考的是https://blog.csdn.net/donkeyboy001/article/details/88576484

  1. 另外当原路径中有“+”号时,URLDecoder.decode反倒把它变成了空格,参见:字符解码时加号解码为空格问题探究,如:
String str = "aaa+aaa aaa%2B";
System.out.println("DECODE="+URLDecoder.decode(str,"utf-8"));

输出结果 DECODE=aaa aaa aaa+,可见URLDecoder把+号解码为空格,把“%2B”解码为+号。

所以我弄了一个简单粗暴的办法同时解决这两问题:

URLDecoder.decode(Main.class.getResource("/").getPath().replaceAll("\\+","%2B"),"utf-8")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_23204557

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

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

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

打赏作者

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

抵扣说明:

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

余额充值