AngularJS路由器解释的百分比“%”符号

时间:2018-08-29 12:30:48

标签: angularjs angularjs-routing

我的AngularJS应用程序具有以下路线

var accountactivation = {
    name: 'accountactivation',
    url: '/activate/:code',
    templateUrl: 'views/account/activation.html',
    controller: 'AccountActivationController',
    authenticate: false
};

像这样添加到路由器

$stateProvider.state(accountactivation)

这是一个帐户激活系统,其中:code是激活码。此代码是URL编码。

问题:有时:code包含%个字符。然后,导航器将重定向到登录名,而不是显示帐户激活页面。

路线示例

  • http://localhost:9000/#!/activate/c43q6zb2正常工作
  • http://localhost:9000/#!/activate/c43q6zb2%被重定向到登录名(有时导致空白页)
  • http://localhost:9000/#!/activate/c43q6zb2Fxb%2FxQkjc2qnjc39QEYTQtpVmgWbw2gzNII0z8QRFrRhz%2FNC4LxzqBIYw5tqM9NaY8ejTxIRXQCfTh8hFszyARL%2Ff9MoOp2MvzNulqefVczsuGpZA8RZArQk也不起作用

是否可以允许angularjs路由具有包含重音符号的参数?

我如何对激活密钥进行编码:有关信息,我使用Java URLEncoder和UTF-8编码字符集

谢谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

https://en.wikipedia.org/wiki/Percent-encoding

  

由于百分比字符(%)用作百分比编码八位字节的指示符,因此必须将该百分比字符编码为%25才能将该八位字节用作URI中的数据。

因此,看来您的URI仅含%无效。您需要对其进行正确编码。要么使用%25使其解码为%,要么将其删除...