我在很多花盆中读到格式错误的 URI 错误是由于 angularjs 覆盖了encodeURIComponent
with encodeUriQuery
。
有什么方法可以encodeUriQuery
在我的控制器或组件中覆盖而不更改角度文件?
两者encodeURIComponent
并angular.$$encodeUriQuery
正确编码%
字符:
console.log(angular.$$encodeUriQuery("%"));
console.log(encodeURIComponent("%"));
<script src="//unpkg.com/angular/angular.js"></script>
%
字符是不允许的,并且永远不应出现在 URL/URI 中。有一些字符是不允许出现的并且永远不应出现在 URL/URI 中、保留字符(如下所述)以及在某些情况下可能会导致问题但被标记为“不明智”或“不安全”的其他字符。RFC-1738 (URLs) 和RFC-2396 (URIs)中清楚地说明了字符受限的原因。请注意,较新的RFC-3986(对 RFC-1738 的更新)定义了在给定上下文中允许使用哪些字符的构造,但较旧的规范提供了一个更简单、更通用的描述,说明哪些字符在以下规则中是不允许的。
URI 语法中不允许使用的排除的 US-ASCII 字符:
control = <US-ASCII coded characters 00-1F and 7F hexadecimal> space = <US-ASCII coded character 20 hexadecimal> delims = "<" | ">" | "#" | "%" | <">
字符“#”被排除在外,因为它用于将 URI 与片段标识符分隔开。百分比字符“%”被排除在外,因为它用于转义字符的编码。换句话说,“#”和“%”是必须在特定上下文中使用的保留字符。