我有一个JS(Angular)应用程序,它从url片段加载参数(在#hash符号之后) - 并且参数包含json对象 - 比如
...#filters={"Course":["ST_12.+13.12.2016 [Basel]"]}
目的是打开数据网格并预过滤一些数据 - 因此该对象非常通用。
麻烦的是,像这样的任何字符串都会转换为
filters=%7B%22Course%22:%5B%22ST_12.+13.12.2016+%5BBasel%5D%22%5D%7D
在目标系统中读取时被视为
...#filters={"Course":["ST_12. 13.12.2016 [Basel]"]}
所以它失去了+并将其变成了一个空间。显而易见的解决方案是将+字符编码为%2b,如
filters=%7B%22Course%22:%5B%22ST_12.%2B13.12.2016+%5BBasel%5D%22%5D%7D
但这失败了。当您将其键入浏览器(chrome / firefox)时,%2b会立即在URL字段中直接解码回+,从而再次导致原始问题。
我还搜索了网络,我发现的所有答案都讨论了为什么空间必须被+编码等的初学者问题,但这并不是我所关注的。我真的需要传递包含真实文本的普通字符串值,包括。 +字符可靠。
答案 0 :(得分:0)
您是否尝试使用window.decodeURIComponent()
?我可以使用decodeURIComponent()
对字符串进行解码,并返回正确的格式,包括+和您编码的所有内容。