当前位置:首页 > JavaScript

js unescape 实现

2026-03-15 08:47:50JavaScript

实现 JavaScript 的 unescape 函数

unescape 函数用于解码由 escape 编码的字符串。它将十六进制编码的字符(如 %20)转换回原始字符(如空格)。以下是几种实现方式:

使用原生 unescape 函数

JavaScript 原生提供了 unescape 函数,可以直接使用:

js unescape 实现

const encodedStr = 'Hello%20World%21';
const decodedStr = unescape(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"

手动实现 unescape

如果需要手动实现 unescape 的功能,可以通过正则表达式替换实现:

js unescape 实现

function customUnescape(str) {
    return str.replace(/%([0-9A-F]{2})/gi, function(match, hex) {
        return String.fromCharCode(parseInt(hex, 16));
    });
}

const encodedStr = 'Hello%20World%21';
const decodedStr = customUnescape(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"

使用 decodeURIComponent

decodeURIComponent 是更现代的替代方案,但需要注意它不支持某些 escape 编码的字符(如 %uXXXX 格式):

const encodedStr = 'Hello%20World%21';
const decodedStr = decodeURIComponent(encodedStr);
console.log(decodedStr); // 输出: "Hello World!"

处理 %uXXXX 格式

如果需要处理 escape 特有的 %uXXXX 格式(Unicode 编码),可以扩展手动实现:

function fullUnescape(str) {
    return str.replace(/%u([0-9A-F]{4})|%([0-9A-F]{2})/gi, function(match, uHex, hex) {
        if (uHex) {
            return String.fromCharCode(parseInt(uHex, 16));
        } else {
            return String.fromCharCode(parseInt(hex, 16));
        }
    });
}

const encodedStr = 'Hello%20World%21%u4F60%u597D';
const decodedStr = fullUnescape(encodedStr);
console.log(decodedStr); // 输出: "Hello World!你好"

注意事项

  • unescape 是已废弃的函数,建议使用 decodeURIComponentdecodeURI
  • decodeURIComponent 无法解码 %uXXXX 格式,需手动处理。
  • 编码时推荐使用 encodeURIComponent 而非 escape

标签: jsunescape
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含inpu…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…