js 实现urlencode
URL编码简介
URL编码(Percent-Encoding)是将特殊字符转换为%后跟两位十六进制数的格式。JavaScript提供原生方法实现这一功能。
使用encodeURIComponent
encodeURIComponent会对除字母、数字和-_.!~*'()之外的字符进行编码:

const encoded = encodeURIComponent('测试&data=123');
console.log(encoded); // 输出 "%E6%B5%8B%E8%AF%95%26data%3D123"
使用encodeURI
encodeURI用于编码完整URL,不编码常见URL符号(如:/?#[]@):

const url = 'https://example.com/测试?x=1';
console.log(encodeURI(url)); // 保持":/?="等符号不变
手动实现方法
需要更细粒度控制时可手动实现:
function customURLencode(str) {
return str.split('').map(char => {
const code = char.charCodeAt(0);
return code > 128 ? '%' + code.toString(16).toUpperCase() : char;
}).join('');
}
注意事项
- 表单数据提交时应使用
encodeURIComponent - 空格会被编码为
%20(而非+) - 现代浏览器已内置完整的编码实现,通常无需手动处理
解码方法
对应解码函数:
decodeURIComponent('%E6%B5%8B%E8%AF%95'); // 返回"测试"






