Spring boot 在Spring RESTful应用程序中传递特殊字符作为查询参数

Spring boot 在Spring RESTful应用程序中传递特殊字符作为查询参数,spring-boot,rest,Spring Boot,Rest,我想将“&;\n?等作为查询参数中的字符传递。但由于它们在HTTP协议中有特殊意义,我觉得需要以某种方式“转义”这些字符以禁用其功能 如果我想在restfulspringboot应用程序查询参数中将它们作为普通字符串序列传递,我该怎么做 正如这里的一些答案所建议的那样,我可以用%0A替换\n,但我想我需要做更多的修复。这是我的字符串:- “包drl;”0A导入com.example.demo.Apple;%0A方言“mvel”%0A规则苹果是绿色的%0A当%0A$person:Apple(颜色=

我想将“&;\n?等作为查询参数中的字符传递。但由于它们在HTTP协议中有特殊意义,我觉得需要以某种方式“转义”这些字符以禁用其功能

如果我想在restfulspringboot应用程序查询参数中将它们作为普通字符串序列传递,我该怎么做

正如这里的一些答案所建议的那样,我可以用%0A替换\n,但我想我需要做更多的修复。这是我的字符串:-

“包drl;”0A导入com.example.demo.Apple;%0A方言“mvel”%0A规则苹果是绿色的%0A当%0A$person:Apple(颜色==“绿色”)时%0A然后是%0A系统输出。println(\'Appl-green-yo-guys\')%0A结束


谢谢!

数据应该是URL编码的。您可以使用
java.net.urlcoder
用适当的
%XY
表示替换所有特殊字符

()

像这样:

导入java.net.urlcoder
[...]
String input=“#您的$data%在此处”
//您可以使用其他字符集,但建议使用UTF-8
字符串编码=urlcoder.encode(输入,StandardCharsets.UTF_8);

本例将以字符串“#your$data%here”为例,并在此处输出“%23your%20%24data%20%25”“

谢谢!我会试试这个!Java URL编码器将空间编码为“+”。因此,您将获得“%23your+%24data+%25here”作为响应。URLEncoder还接受字符串作为第二个参数。因此,您必须使用类似字符串encodedText=URLEncoder.encode(text,String.valueOf(StandardCharsets.utf8));