利用JS获取地址栏的中文参数,如何避免取到乱码

利用JS获取地址栏的中文参数,如何避免取到乱码,第1张

地址栏的URL不同的浏览器的行为不太一样,有的会按归照GB编码编码成%A1%A1这种形式,有的会按照UTF-8编码,直接输入URL和点击链接访问的URL也可能不一样。

这样js取值的时候会出现字符集的问题。

建议还是修改ASPX文件,取到值以后生成js时赋值给某个变量。

js获取搜索引擎搜索关键词有两种方法可以实现:

第一种方法:

var str1=""; 

var str2= ""; 

var refer=documentreferrer; 

var sosuo=refersplit("")[1]; 

var grep=null; 

var str=null; 

var keyword=null; 

var skey="xx"; 

var ykey=""; 

switch(sosuo){ 

  case "baidu": 

    grep=/wd\=\&/i; 

    str=refermatch(grep) 

    keyword=strtoString()split("=")[1]split("&")[0]; 

    //consolelog(decodeURIComponent(keyword)); 

 ykey=decodeURIComponent(keyword); 

    addCookie('key',decodeURIComponent(keyword),1); 

 //alert(decodeURIComponent(keyword)); 

  break; 

  case "google": 

    grep=/&q\=\&/i; 

    str=refermatch(grep) 

    keyword=strtoString()split("&")[1]split("=")[1]; 

    //consolelog(decodeURIComponent(keyword)); 

 ykey=decodeURIComponent(keyword); 

    addCookie('key',decodeURIComponent(keyword),1); 

  break; 

  case "sogou": 

    grep=/query\=\&/i; 

    str=refermatch(grep) 

    keyword=strtoString()split("&")[1]split("&")[2]; 

    //consolelog(decodeURIComponent(keyword)); 

 ykey=decodeURIComponent(keyword); 

    addCookie('key',decodeURIComponent(keyword),1); 

 //alert(decodeURIComponent(keyword)); 

  break; 

  default: 

  addCookie('key','',1); 

var ckey=(getCookie('key')) 

//alert(ckey); 

if(ykeyindexOf(skey)>-1) 

}else 

function deleteCookie(name){ 

var date=new Date(); 

datesetTime(dategetTime()-10000); 

documentcookie=name+"=v; expires="+datetoGMTString(); 

function getCookie(name){ 

var strCookie=documentcookie; 

var arrCookie=strCookiesplit("; "); 

for(var i=0;i < arrCookielength;i++){ 

var arr=arrCookie[i]split("="); 

if(arr[0]==name)return arr[1]; 

return ""; 

function addCookie(name,value,expiresHours){ 

var cookieString=name+"="+escape(value); 

//判断是否设置过期时间 

if(expiresHours>0){ 

var date=new Date(); 

datesetTime(dategetTime+expiresHours36001000); 

cookieString=cookieString+"; expires="+datetoGMTString(); 

documentcookie=cookieString; 

documentwrite(ykey); 

if(ykey=="") 

{} 

else 

 documentwrite(""); 

}

第二种方法:

function getDomainQuery(url) {   

    var d = [];   

    var st = urlindexOf('//', 1);   

    var _domain = urlsubstring(st + 1, urllength);   

    var et = _domainindexOf('/', 1);   

    dpush(_domainsubstring(1, et));   

    dpush(_domainsubstring(et + 1, urllength));   

    return d   

}   

function route() {   

    var eg = [];   

    egpush(['baidu', 'wd']);   

    egpush(['google', 'q']);   

    egpush(['soso', 'w']);   

    egpush(['yodao', 'q']);   

    egpush(['bing', 'q']);   

    egpush(['yahoo', 'q']);   

    egpush(['sogou', 'query']);   

    egpush(['gougou', 'search']);   

    egpush(['360', 'q']);   

    var dq = getDomainQuery(documentreferrer);   

    var keyword=null;   

    var grep=null;   

    var str=null;   

    for(var el in eg){   

        var s = eg[el];   

        var DandQ=String(s)split(","); //字符分割   

        if (dq[0]indexOf(DandQ[0])>0){   

            eval("grep=/"+DandQ[1]+"\=\&/i;");   

            str = dq[1]match(grep);   

            keyword = strtoString()split("=")[1]split("&")[0];   

            keyword = decodeURIComponent(keyword);   

            alert(keyword);   

            return false;   

        }   

    }   

}   

route();

可以通过解析url路径,获取参数

\tfunctiongetURLParameter(name){

returndecodeURIComponent((newRegExp('[|&]'+name+'='+'([^&;]+)(&|#|;|$)')exec(locationsearch)||[,""])[1]replace(/\+/g,'%20'))||null;

\t}

\tvarorgid=getURLParameter('orgid');

\tvarorglevel=getURLParameter('orglevel');

\tconsolelog('orgid='+orgid);

\tconsolelog('orglevel='+orglevel);

扩展资料

html中通过url地址传参及获取参数:

varurl=documentlocationtoString();//获取url地址

varurlParmStr=urlslice(urlindexOf('')+1);//获取问号后所有的字符串

vararr=urlParmStrsplit('&');//通过&符号将字符串分割转成数组

varcourseId=arr[0]split("=")[1];//获取数组中第一个参数

varunit_title=arr[1]split("=")[1];//第二个参数

unit_title=decodeURI(unit_title);//转码将解码方式unscape换为decodeURI,将中文参数获取

consolelog(unit_title);

将每一个字节表示的十六进制表示的内容,用字符串来显示。

UTF(UCS Transformation Format)规范,常见的UTF规范包括UTF-8、UTF-7、UTF-16

使用2个字节表示已经有码点的字符。UCS-2只是一个编码方案,UTF-16却要用于实际的传输

UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码

js使用的编码

中日韩统一表意文字

每个汉字由两个字节构成

是针对繁体汉字的汉字编码,台湾地区常用,共收录13,060个汉字

该函数能解码由创建或其它流程得到的统一资源标识符(URI)。

方法用于解码由方法或者其它类似方法编码的部分统一资源标识符(URI)。

escape生成新的由十六进制转义序列替换的字符串

计算生成一个新的字符串,其中的十六进制转义序列将被其表示的字符替换。

什么是request对象

Request对象的作用是与客户端交互,收集客户端的Form、Cookies、超链接,或者收集服务器端的环境变量。

request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。客户端可通过HTML表单或在网页地址后面提供参数的方法提交数据,然后通过request对象的相关方法来获取这些数据。request的各种方法主要用来处理客户端浏览器提交的请求中的各项参数和选项。

在JS中获取到request,网页地址的方法:

windowlocationhref

这里假设URL完整为:baiducom/indexhtmltest=233333

这里要取request中值的属性,可以使用正则表达式获取

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

首先使用RegExp构造一个正则正则表达式对象

var reg = new RegExp("(^|/|&)test=([^&])(&|$)", "i");

参数

pattern             一个字符串,指定了正则表达式的模式或其他正则表达式。

attributes          可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

修饰符

i    执行对大小写不敏感的匹配。  

g    执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。  

m    执行多行匹配。  

然后使用match匹配出结果来

var match= windowlocationhrefmatch(reg);

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

参数

searchvalue    规定要检索的字符串值。  

regexp            规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。  

取出结果

match[2]

返回:233333

将它封装为一个函数

function getRequestValue(name) { 

var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i"); 

var match= windowlocationhrefmatch(reg); 

return match&&match[2]||null;

}

完整实例代码:

<html>

<head>

<title></title>

</head>

<body>

</body>

<script type="text/javascript">

function getValue(name) { 

var reg = new RegExp("(^|/|&)" + name + "=([^&])(&|$)", "i"); 

var match= windowlocationhrefmatch(reg); 

return match&&match[2]||null;

}

consolelog(getValue('test'));

</script>

</html>

地址应该为"bookhtmlId="+bookId+"&Uid="+Uid;需要添加&连接符

可用以下对象:

<script type="text/javascript" language="javascript">

var request = {

QueryString: function (val) {

var uri = windowlocationsearch;

var re = new RegExp("" + val + "\=([^\&\])", "ig");

return ((urimatch(re)) (urimatch(re)[0]substr(vallength + 1)) : null);

}

}

</script>

可用requestQueryString("id")和 requestQueryString("uid")来获取id和uid。

1 调用后端接口导出文件

示例下载接口url >

以上就是关于利用JS获取地址栏的中文参数,如何避免取到乱码全部的内容,包括:利用JS获取地址栏的中文参数,如何避免取到乱码、js怎样获取搜索引擎搜索关键词、html中的js如何获取通过POST方法传递过来的参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9314694.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存