kam*_*aci 14 java jquery spring tomcat utf-8
我指示我的URL发送类似的Ajax请求:
url += '/' + something + '/' + id;
var response;
$.ajax({
async : false,
type: 'DELETE',
url: url,
...
Run Code Online (Sandbox Code Playgroud)
我removeId
是一个包含UTF-8字符的变量.我将在Java端处理该变量:
@RequestMapping(value = "/something/{id}", method = RequestMethod.DELETE)
public void myMethod(HttpServletResponse response, @PathVariable String id) {
...
Run Code Online (Sandbox Code Playgroud)
然而id
,Java端的变量与原始变量不同,因为UTF-8字符变为奇怪的东西.
如何从JavaScript端发送UTF-8字符并在我的Java端再次转换它(Spring 3 with 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
Run Code Online (Sandbox Code Playgroud)
当我看到id变量具有该值时:
araç
Run Code Online (Sandbox Code Playgroud)
代替:
ara%C3%A7
Run Code Online (Sandbox Code Playgroud)
Spring(或Tomcat)会自动执行此操作吗?当控制器作为路径变量时,有没有办法自动解码它(我的意思是没有写任何东西:
URLDecoder.decode(id,"UTF-8");
Run Code Online (Sandbox Code Playgroud)
它会自动转换)
Jör*_*ann 16
您看到的id值似乎使用iso-8859-1 charset而不是utf-8进行解码.在java EE中未指定url的路径部分的编码,并且没有标准的api来设置它.对于查询参数,您可以在访问任何参数之前使用request.setCharacterEncoding以正确解码它们.的CharacterEncodingFilter
正是这么做的,但对路径参数没有影响.
要在Tomcat中使其工作,您必须URIEncoding
将Connector
元素的属性设置server.xml
为"utf-8".
所有你想知道的关于java webapp中的字符编码都可以在这个类似问题的优秀答案中找到.