当前位置: 首页 > 工具软件 > getUrlParam > 使用案例 >

解决getUrlParam提取中文参数乱码问题

厉念
2023-12-01
// 封装一个函数提取url
	function getUrlParam(name) {
		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
		var r = window.location.search.substr(1).match(reg);  //匹配目标参数
		if (r != null) return unescape(r[2]); return null; //返回参数值
	};

直接解析url时,出现了中文参数乱码的现象。

网上查找原因:只有字母和数字[0-9a-zA-Z]、一些特殊符号”$-_.+!*’(),“[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。”
这意味着,如果URL中有汉字,就必须编码后使用。但是麻烦的是,RFC 1738没有规定具体的编码方法,而是交给应用程序(浏览器)自己决定。

于是使用 JavaScript 的编码函数 encodeURI() 和解码函数 decodeURI() 解决了问题。

// 封装一个函数提取url
	function getUrlParam(name) {
		// 对url进行编码
		var url = encodeURI(window.location.search);
		var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
		var r = url.substr(1).match(reg);  //匹配目标参数
		if (r != null) return unescape(r[2]); return null; //返回参数值
	};


// 对url进行解码
var materialname = decodeURI(getUrlParam('MaterialName'));//正常
 类似资料: