URL编码/解码 核心JS实现

简介: 这是一款基于Vue开发的轻量级URL编码/解码在线工具,纯前端实现,无需依赖外部库。利用`encodeURI`/`encodeURIComponent`及对应解码方法,支持一键编码、解码、清空与复制,并自动聚焦输入框,提升使用效率。

URL编码/解码 核心JS实现

核心功能实现

URL编码/解码工具的核心功能基于JavaScript原生的四个方法:encodeURIencodeURIComponentdecodeURIdecodeURIComponent。这四个方法是浏览器内置的,无需引入任何外部库,直接就可以使用。

在线工具网址:https://see-tool.com/url-encode-decode
工具截图:
工具截图.png

状态管理

使用Vue的响应式数据来管理输入和输出状态,这样当数据变化时,界面会自动更新:

const inputText = ref('')
const outputText1 = ref('')
const outputText2 = ref('')

这里定义了三个响应式变量:inputText 用于存储用户输入的原始文本,outputText1 用于存储 encodeURI 处理后的结果,outputText2 用于存储 encodeURIComponent 处理后的结果。

编码功能

编码功能是整个工具的核心之一。当用户点击编码按钮时,会触发 handleEncode 函数:

const handleEncode = () => {
   
  if (!inputText.value.trim()) {
   
    MessagePlugin.warning(t('urlEncodeDecode.emptyInput'))
    return
  }

  try {
   
    outputText1.value = encodeURI(inputText.value)
    outputText2.value = encodeURIComponent(inputText.value)
    MessagePlugin.success(t('urlEncodeDecode.encode') + ' ' + t('urlEncodeDecode.copied'))
  } catch (error) {
   
    console.error('Encode error:', error)
    MessagePlugin.error(t('urlEncodeDecode.encodeError'))
  }
}

这个函数首先检查用户是否输入了内容,如果输入框为空,会显示一个提示消息。然后使用 try-catch 包裹编码逻辑,防止异常导致程序崩溃。编码成功后,会同时生成两种编码结果并显示在界面上,同时给出成功提示。

解码功能

解码功能与编码功能相对应,当用户点击解码按钮时,会触发 handleDecode 函数:

const handleDecode = () => {
   
  if (!inputText.value.trim()) {
   
    MessagePlugin.warning(t('urlEncodeDecode.emptyInput'))
    return
  }

  try {
   
    outputText1.value = decodeURI(inputText.value)
    outputText2.value = decodeURIComponent(inputText.value)
    MessagePlugin.success(t('urlEncodeDecode.decode') + ' ' + t('urlEncodeDecode.copied'))
  } catch (error) {
   
    console.error('Decode error:', error)
    MessagePlugin.error(t('urlEncodeDecode.decodeError'))
  }
}

解码函数的结构和编码函数类似,同样先检查输入是否为空,然后尝试使用 decodeURIdecodeURIComponent 进行解码。需要注意的是,如果输入的编码字符串格式不正确,解码可能会抛出异常,所以必须使用 try-catch 来捕获错误并给用户友好的提示。

清空功能

清空功能可以一键清除所有输入和输出内容,方便用户重新开始:

const clearAll = () => {
   
  inputText.value = ''
  outputText1.value = ''
  outputText2.value = ''
  MessagePlugin.info(t('urlEncodeDecode.clear'))
}

这个函数很简单,就是将三个响应式变量都重置为空字符串,然后显示一个信息提示。

复制功能

复制功能是一个很实用的功能,用户可以一键将编码或解码结果复制到剪贴板:

const copyResult1 = async () => {
   
  if (!outputText1.value.trim()) {
   
    MessagePlugin.warning(t('urlEncodeDecode.noContent'))
    return
  }

  try {
   
    await navigator.clipboard.writeText(outputText1.value)
    MessagePlugin.success(t('urlEncodeDecode.copied'))
  } catch {
   
    const textarea = document.createElement('textarea')
    textarea.value = outputText1.value
    document.body.appendChild(textarea)
    textarea.select()
    document.execCommand('copy')
    document.body.removeChild(textarea)
    MessagePlugin.success(t('urlEncodeDecode.copied'))
  }
}

复制功能首先检查是否有内容可复制。然后优先使用现代浏览器的 navigator.clipboard API,这是目前推荐的方式。如果这个 API 不可用(比如在一些旧浏览器中),就会使用降级方案:创建一个临时的 textarea 元素,将内容设置进去,选中后执行 document.execCommand('copy') 命令,最后再移除这个临时元素。无论使用哪种方式,复制成功后都会给用户一个成功提示。

自动聚焦

为了提升用户体验,页面加载时会自动聚焦到输入框,用户可以直接开始输入:

onMounted(() => {
   
  if (process.client) {
   
    const input = document.querySelector('textarea')
    if (input) {
   
      input.focus()
    }
  }
})

这里使用了 Vue 的 onMounted 生命周期钩子,在组件挂载后执行。首先判断是否在客户端环境(因为 Nuxt.js 支持服务端渲染,服务端没有 DOM),然后找到 textarea 元素并调用 focus() 方法聚焦。

encodeURI 和 encodeURIComponent 的区别

这两个方法虽然都是用来编码 URL 的,但它们的使用场景不同:

  • encodeURI 主要用于编码完整的URL,不会编码URL中的特殊字符(如 :/?#[]@!$&'()*+,;=),因为这些字符在 URL 中是有特殊含义的,需要保留。
  • encodeURIComponent 会编码所有字符,包括URL中的特殊字符,所以它更适合编码 URL 的参数部分,比如查询字符串的值。

相应的,解码时也需要使用对应的方法:decodeURI 对应 encodeURIdecodeURIComponent 对应 encodeURIComponent

以上就是URL编码/解码工具的核心JS实现。

目录
相关文章
|
2月前
|
JavaScript 安全
URL编码/解码 在线工具分享
分享一款自研的URL编码/解码在线工具(Vue开发),支持encodeURI与encodeURIComponent两种模式。粘贴即转、一键复制,界面清爽无广告,附使用说明与编码对照表,轻松处理中文及特殊字符。
6589 2
|
4月前
|
存储 缓存 监控
JDK自带调优五件套(Jstat/Jinfo/Jmap/Jhat/Jstack)深度解析+实战指南
本文深入解析JDK自带的5款JVM调优工具(Jstat、Jinfo、Jmap、Jhat、Jstack),帮助开发者高效定位线上系统性能问题。Jstat实时监控GC状态,Jinfo查看修改JVM参数,Jmap生成内存快照,Jhat分析堆内存泄漏,Jstack诊断线程死锁。通过企业级实战案例,展示工具协同使用流程,并给出缓存优化等解决方案。这些轻量级工具无需额外部署,是Java开发者必备的性能调优利器,能有效应对内存泄漏、CPU过载等常见问题。
1378 3
|
1月前
|
存储 人工智能 网络安全
保姆级教程:OpenClaw 阿里云/本地部署及集成 Skills 步骤,立即让 AI 干活!
如果说OpenClaw与大模型的组合是给AI助理赋予了“智能大脑”,那么Skills就是为它装上了“灵活手脚”。作为OpenClaw的核心扩展能力,Skills是可安装、可卸载的功能模块,能够让基础版OpenClaw突破原生限制,解锁网页浏览、邮件管理、文件处理、多平台交互等复杂操作。截至2026年2月,Clawhub(OpenClaw官方技能市场)已收录超过5700个各类Skills,覆盖办公、开发、娱乐、生活等多场景,安装量最高的技能下载量突破2000次,成为提升OpenClaw实用性的关键。
2190 8
|
2月前
|
人工智能 运维 机器人
2026年OpenClaw(Clawdbot)极速部署集成飞书喂饭级攻略
2026年,OpenClaw(曾用名Clawdbot、Moltbot)已成为开源AI智能体领域的标杆工具,凭借轻量极速部署、多技能可扩展、自然语言驱动的核心优势,成为个人办公、团队协作的“效率神器”。而飞书作为主流办公协作平台,覆盖即时沟通、文档协作、日程管理等全场景,将OpenClaw与飞书集成,既能实现AI助手7×24小时云端值守,又能让AI能力无缝融入飞书聊天、群组,无需切换平台,一键发送指令即可完成文档生成、任务拆解、资料搜索等操作。
3710 0
|
3月前
|
安全 C语言 Docker
从零开始学构建Docker镜像:4种实用方法+生产级实践规范
本文系统讲解Docker镜像构建四大方法,聚焦生产实践,涵盖环境搭建、Dockerfile规范、多阶段构建、安全管控与CI/CD集成,强调非root运行、镜像瘦身及可追溯Tag规范,助力开发者掌握从开发到生产的全链路容器化技能。
1294 6
|
11月前
|
存储 JSON API
aipy实战:Deepseek-V3、Hunyuan&Qwen分析618平板攻略
Aipy是一款结合LLM与Python的智能工具,用户通过简单指令即可让LLM分析并生成代码,实时解决问题。本次v0.1.28版本新增联网搜索、案例分享等功能,并引入混元和Qwen模型。测评中,三个模型完成“618平板选购攻略”任务表现各异:deepseek-v3界面精美、信息全面但价格有偏差;hunyuan-turbos-latest信息不全但界面简洁;qwen-plus-latest推荐合理但数据失真。总体而言,Aipy在操作友好性和分析界面上显著提升,适合解决实际问题。
|
4月前
|
DataWorks 监控 数据可视化
数据可视化大屏项目
数据可视化大屏是数据价值具象化的核心工具,广泛应用于企业实时监控、运营分析与大型活动指挥。本文系统解析从多源数据整合、DataWorks加工、DataV可视化设计,到WebSocket实时推送、权限控制与性能优化的全链路实践,并结合双11实战案例,揭示高并发、高实时场景下的技术落地逻辑,助力企业构建高效、安全、流畅的决策中枢。(238字)
300 0
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
通用人工智能的标准是什么,与大模型有何区别?发展到什么程度了?
本文深入解析2025年迅猛发展的通用人工智能(AGI),梳理其核心概念、关键技术与现实应用,对比当前主流大模型的差异,并探讨普通人如何在日常生活与工作中体验和应用这一颠覆性技术,展望AGI带来的社会变革与伦理挑战。
2491 5
|
网络协议 Unix Linux
`AF_INET`
`AF_INET`
591 3