美文网首页前端学习程序员前端开发
js地址栏传参中文乱码解决

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

作者: webCoder | 来源:发表于2016-01-19 20:33 被阅读756次
    引言
    今天在工作过程中遇到一个很奇怪的问题:
    同样的中文传参在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 的副本,其中的十六进制转义序列将被它们表示的字符替换。
    
    为了避免遇到同样的问题,当大家需要地址栏传参时,最好采用上面的方法进行编码、解码。

    相关文章

      网友评论

      • jarvan4dev:前端如何加密呢?防止请求连接被盗用
        webCoder:@Eason4dev 还不会,之后去看看
      • llqfsoul:转完之后,后台接收记得要url_decode一下哦。
        webCoder:@llqfsoul 这个就是简单的前端两个页面传参~

      本文标题:js地址栏传参中文乱码解决

      本文链接:https://www.haomeiwen.com/subject/eytlkttx.html