如何处理/理解Java中字符串中的一些奇怪符号,如%2B,%5E20?

如何处理/理解Java中字符串中的一些奇怪符号,如%2B,%5E20?,java,escaping,Java,Escaping,我调试了现有项目,得到了一个字符串变量: "q=%2B%28%28%28keywords_en%3A%28pp%3F+OR+pp%29%29%29%29+%28+name%3A%28pp%3F%29%5E20+number%3A%28pp%3F%29%5E20+creator%3A%28OR%5C%3Art.org.WuoUser%5C%3A11%29%5E2+modifier%3A%28OR%5C%3Art.org.WuoUser%5C%3A11%29%5E2+%29+_val_%3A%22r

我调试了现有项目,得到了一个字符串变量:

"q=%2B%28%28%28keywords_en%3A%28pp%3F+OR+pp%29%29%29%29+%28+name%3A%28pp%3F%29%5E20+number%3A%28pp%3F%29%5E20+creator%3A%28OR%5C%3Art.org.WuoUser%5C%3A11%29%5E2+modifier%3A%28OR%5C%3Art.org.WuoUser%5C%3A11%29%5E2+%29+_val_%3A%22recip%28rord%28modifyTimestamp%29%2C1%2C1000%2C1000%29%22%5E2";
我有点困惑这些%2B、%28、%3A、%5E、%5E20代表什么? 如果它们是转义字符,我如何获得相应的人类可读字母? 如果有人能提供帮助,我们将不胜感激。
提前感谢。

您可以使用以下方法对其进行解码:

String decodedString = URLDecoder.decode(encodedString, "UTF-8");

如果不是UTF-8,也可以使用任何合适的字符编码。

您可以使用以下方法对其进行解码:

String decodedString = URLDecoder.decode(encodedString, "UTF-8");

如果不是UTF-8,也可以使用任何合适的字符编码。

这通常被称为URI/URL编码的一部分。@pst,TedHopp:感谢大家提供的宝贵信息和帮助。对于^20部分,我们的系统实际上构建了一个全文搜索模块。在Demax请求处理程序中使用^20或^2等格式来设置Solr字段以获得预期结果。谢谢你帮助我更好地理解。不客气。如果贴出的答案是有用的,即使不是完全完整的,记得接受它。或者,添加您自己的答案并接受:-这是URI/URL编码的一部分。@pst,TedHopp:感谢大家提供的宝贵信息和帮助。对于^20部分,我们的系统实际上构建了一个全文搜索模块。在Demax请求处理程序中使用^20或^2等格式来设置Solr字段以获得预期结果。谢谢你帮助我更好地理解。不客气。如果贴出的答案是有用的,即使不是完全完整的,记得接受它。或者,添加您自己的答案并接受:-非常感谢您的快速回答。它工作了,我得到了原始的单词,比如q=+关键字_en:pp?或pp名称:pp?^20编号:pp?^20创建者:或\:WuoUser \:11^2。但另一个问题是,^20,^2在Java中代表什么?谢谢。@VincentJia-我不知道^20或^2是什么。它们不是标准Java正则表达式语法的一部分,而且在任何情况下,该字符串看起来都不像RE。可能是某种搜索规范语法?作为Java中的运算符,^是按位或逻辑异或。但这在字符串中也没有任何意义。我试图添加注释并感谢大家,但我得到提示说只能通知一个额外的用户。我得到了关于^20部分的答案,谢谢。非常感谢你的快速回答。它工作了,我得到了原始的单词,比如q=+关键字_en:pp?或pp名称:pp?^20编号:pp?^20创建者:或\:WuoUser \:11^2。但另一个问题是,^20,^2在Java中代表什么?谢谢。@VincentJia-我不知道^20或^2是什么。它们不是标准Java正则表达式语法的一部分,而且在任何情况下,该字符串看起来都不像RE。可能是某种搜索规范语法?作为Java中的运算符,^是按位或逻辑异或。但这在字符串中也没有任何意义。我试图添加注释并感谢大家,但我得到提示说只能通知一个额外的用户。我得到了关于^20部分的答案,谢谢。