• html页面跳转带中文参数,乱码


    https://blog.csdn.net/xqhadoop/article/details/78235084

    我们知道如果url地址中包含中文时,一般浏览器都会将其重新编码成对应的字符。

    一.URL编码出现原因
    URL 只能使用 ASCII 字符集来通过因特网进行发送。 也就是说URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号 。这意味着 如果URL中有汉字,就必须编码后使用。但是麻烦的是 标准的国际组织并没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。这导致”URL编码”成为了一个混乱的领域。

    二.URL编码解决方案

    Url编码通常也被称为百分号编码,是因为它的编码方式非常简单,使用%百分号加上两位的字符——0123456789ABCDEF——代表一个字节的十六进制形式。Url编码默认使用的字符集是US-ASCII。例如a在US-ASCII码中对应的字节是0x61,那么Url编码之后得到的就是%61,我们在地址栏上输入http://g.cn/search?q=%61%62%63,实际上就等同于在google上搜索abc了。又如@符号在ASCII字符集中对应的字节为0x40,经过Url编码之后得到的是%40。

    对于非ASCII字符,需要使用ASCII字符集的超集进行编码得到相应的字节,然后对每个字节执行百分号编码。对于Unicode字符,RFC文档建议使用utf-8对其进行编码得到相应的字节,然后对每个字节执行百分号编码。如”中文”使用UTF-8字符集得到的字节为0xE4 0xB8 0xAD 0xE6 0x96 0x87,经过Url编码之后得到”%E4%B8%AD%E6%96%87”。

    详细URL编码信息http://www.cnblogs.com/jerrysion/p/5522673.html

    三.中文参数编码

    浏览器中地址栏出现的中文参数在向后台提交参数时,浏览器会自动将中文进行编码再向后台提交数据。

    我们假设需要将a页面中的参数传递中b页面中。

    a页面如下:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test</title>
    </head>
    <body>
    <div id="main" style=" 850px; height: 500px">
    <a href="b.html?abc=南京">向b页面传递参数</a>
    </div>
    </body>
    </html>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    b页面如下:

    <html>
    <meta charset="utf-8">
    <script>
    function getParams(key) {
    var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
    //如果地址栏中出现中文则进行编码
    var r = encodeURI(window.location.search).substr(1).match(reg);
    if (r != null) {
    //将中文编码的字符重新变成中文
    return decodeURI(unescape(r[2]));
    }
    return null;
    };
    data=getParams("abc")
    alert(data)
    </script>
    </html>
    ————————————————
    版权声明:本文为CSDN博主「xqhadoop」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xqhadoop/article/details/78235084

  • 相关阅读:
    C语言关键字register、extern、static、一些总结,及项目中使用的心得
    c语言,文件操作总结
    《Redis内存数据库》Redis内存数据库技术总结
    《Redis内存数据库》Redis环境搭建(Linux)
    《Linux 操作系统》Linux的常用命令操作大全
    《Java练习题》Java编程题合集(全)
    《Java练习题》Java习题集一
    《Java基础知识》Java技术总结
    《Java基础知识》Java数据类型以及变量的定义
    《Java 底层原理》Jvm 类的加载原理
  • 原文地址:https://www.cnblogs.com/a1304908180/p/14980823.html
Copyright © 2020-2023  润新知