js地址栏传参中文乱码解决

引言
今天在工作过程中遇到一个很奇怪的问题:
同样的中文传参在PC端浏览器中新的页面接受正常,
但是测试人员在测试移动端时却发现中文乱码。
google,百度了一段时间,一直没有找到问题的原因。
(如果你知道原因也希望你能告诉我,谢谢~)

虽说没有找到为什么会造成这样不一致,但是还是解决了。
利用Global对象的encodeURI()和encodeURIComponent()方法,以及其对应的decodeURI()、decodeURIComponent()方法。

encodeURI() 
此函数可把字符串作为 URI 进行编码,
此方法接收一个字符串URIstring,含有 URI 或其他要编码的文本,
返回值为URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
提示:如果 URI 组件中含有分隔符,
比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
encodeURIComponent() 
此函数可把字符串作为 URI 组件进行编码,
此方法接收一个字符串URIstring,含有 URI 组件或其他要编码的文本,
返回值为URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。
提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,
前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串),
因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

decodeURI()
此函数可对 encodeURI() 函数编码过的 URI 进行解码,
参数为一个字符串URIstring,含有要解码的 URI 或其他要解码的文本,
返回值为URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换
decodeURIComponent() 
此函数可对 encodeURIComponent() 函数编码的 URI 进行解码,
参数为一个字符串,含有编码 URI 组件或其他要解码的文本,
返回值为URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。
为了避免遇到同样的问题,当大家需要地址栏传参时,最好采用上面的方法进行编码、解码。
    原文作者:webCoder
    原文地址: https://www.jianshu.com/p/58d6c8dd7a1b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞