我指示我的 URL 发送一个像这样的 Ajax 请求:
url += '/' + something + '/' + id;
var response;
$.ajax({
async : false,
type: 'DELETE',
url: url,
...
我的removeId
变量包含UTF-8字符。我将在Java端处理该变量:
@RequestMapping(value = "/something/{id}", method = RequestMethod.DELETE)
public void myMethod(HttpServletResponse response, @PathVariable String id) {
...
然而在Java端的id
变量与原始变量不同,因为UTF-8字符会变成奇怪的东西。
我如何从JavaScript端发送UTF-8字符,并在我的Java端(使用Spring 3和REST,我的Web服务器是Tomcat 7)再次进行转换?
PS 1:即使我不使用encodeUriComponent
函数,似乎我的URL也会自动进行编码?
PS 2:为了让问题更清晰:
i.e. my id variable is araç and sent URL is: localhost:8080/sdfasf/ara%C3%A7
当我看到id变量具有那个值时:
araç
改为:
ara%C3%A7
Spring(或Tomcat)是否自动执行此操作?是否有办法在控制器作为路径变量时自动解码它(我的意思是不需要像这样写任何内容:
URLDecoder.decode(id,"UTF-8");
它将会自动转换
setCharacterEncoding
无法处理路径参数,也许在Tomcat中可以。尽管这与类似问题的某些答案相矛盾,例如https://dev59.com/G13Ua4cB1Zd3GeqP9Rgv#8079547或https://dev59.com/Nk3Sa4cB1Zd3GeqPsyck#2630977。 - Jörn Horstmann