JS decodeURIComponent 与 JAVA 解码

前端用 decodeURIComponent 编码字符串后,会生成类似

%7B%22mailNo%22%3A%223322826833883%22%2C%22status%22%3A%220%22%2C%22errCode%22%3A%221%22%2C%22message%22%3A%22%5Cu67e5%5Cu8be2%5Cu4e0d%5Cu5230%5Cu4fe1%5Cu606f%5Cuff0c%5Cu8bf7%5Cu6838%5Cu5bf9%5Cu5355%5Cu53f7%5Cu548c%5Cu5feb%5Cu9012%5Cu516c%5Cu53f8%5Cu662f%5Cu5426%5Cu6b63%5Cu786e%22%2C%22expSpellName%22%3A%22shentong%22%2C%22expTextName%22%3A%22%5Cu7533%5Cu901a%5Cu5feb%5Cu9012%22%2C%22tel%22%3A%2295543%5C%2F4008895543%22%2C%22data%22%3A%5B%5D%2C%22update%22%3A%221486536329%22%2C%22cache%22%3A7%2C%22ord%22%3A%22ASC%22%7D

这样的形式。
但是这样的形式用Java不好处理,网上大部分都说用

String result = java.net.URLDecoder.decode(url, "UTF-8");

但是效果不好,内容里如果包含双引号的话,双引号里的内容没有被解码出来。

最后在StackOverFlow上找到了,解决方案很简单

String result = new java.net.URI(url).getPath();

对,你没有看错,getPath()可以完美解码。

{
    "mailNo": "3322826833883",
    "status": "0",
    "errCode": "1",
    "message": "查询不到信息,请核对单号和快递公司是否正确",
    "expSpellName": "shentong",
    "expTextName": "申通快递",
    "tel": "95543/4008895543",
    "data": [],
    "update": "1486536329",
    "cache": 7,
    "ord": "ASC"
}

关注我的公众号.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘要 该配置文件定义了支持高质量音频分发所需的Bluetooth®设备的要求。这些要求以终端用户服务的方式表达,并...
    公子小水阅读 10,072评论 0 4
  • 之前积累了XSS 有一段时间,因为目前开始了一件有趣的工程,需要整合非常多的知识,其中Web 安全这一块出现最多的...
    刀背藏身阅读 9,262评论 0 16
  • 「本文所有参考资料来源均附于文末,供大家拓展阅读」 另:未经证实来源资料,本人绝不使用 文|土豆泥先生 写在文前:...
    熊猫Panda先生阅读 1,507评论 19 27
  • Data Structures 基本数据结构Dictionaries 字典Priority Queues 优先队列...
    码蚁Q阅读 1,159评论 0 11
  • 想到要快专四考试了,内心还是很害怕。不知道如何复习,内心很焦虑,很烦躁,不知道自己该干啥。害怕通不过考试,害怕得不...
    荷麦阅读 208评论 0 0