如何在Angularjs中编码String?

Pra*_*ede 5 javascript java spring spring-mvc angularjs

我使用Angularjs向我的服务器发送get http请求.服务器使用Spring MVC响应rest请求.这是我的角网址建筑上的代码片段:

var name="myname";
var query= "wo?d";
var url = "/search/"+query+"/"+name;
Run Code Online (Sandbox Code Playgroud)

这里是Spring MVC Controller:

@RequestMapping( value = "/search/{query}/{name}" , method = RequestMethod.GET , produces = MediaType.APPLICATION_JSON_VALUE )
@ResponseBody
public List<Data> search() {

    // search logic

return data;
}
Run Code Online (Sandbox Code Playgroud)

当查询包含问号字符(?)时,我遇到了问题.url被拆分,以便Spring响应:WARN osweb.servlet.PageNotFound - 找不到带有URI的HTTP请求的映射[/ my-server/web/search/wo在DispatcherServlet中,名称为'mvc'

这是正确的,因为问号?介绍请求参数的开头.我试过使用js函数,encodeURI(query)但问号字符没有编码.如何在url中编码问号?谢谢

dfs*_*fsq 8

Javascript具有用于此目的的特殊功能encodeURIComponent

encodeURIComponent转义除以下字符外的所有字符:字母,十进制数字, - _.!〜*'()

同时encodeURI也不编码; , / ? : @ & = + $ #字符.