找回密码
 立即注册
查看: 212|回复: 0

[Javascript] JavaScript实现一个在线URL编码解码、base65编码解码工具

[复制链接]

30

金豆

170

黑豆

2

精华

管理员

站长QQ:515138

主题
124
回帖
7
在线时间
76 小时
注册时间
2024-2-3
最后登录
2024-11-14
发表于 2024-7-22 21:36:36 | 显示全部楼层 |阅读模式
JavaScript实现一个在线URL编码解码、base65编码解码工具

url编码解码在开发调试的时候很常见,还有base64编码解码,都是日常开发使用的,因此需要借助一些工具快速实现编码解码。在很多编程语言都有url编码解码,base64编码解码的函数,本次使用的是javascript实现的编码解码功能。


代码如下:
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>编码解码字符处理在线工具 - URL编码URL解码encodeURI解码encodeURIComponent解码URL参数分割Base64编码Base64解码</title>
  8.     <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css">
  9.     <meta name="description" content="提供多种编码解码工具,包括URL编码、URL解码、encodeURI解码、encodeURIComponent解码、URL参数分割、Base64编码和Base64解码。帮助用户轻松转换和处理各种编码格式。">
  10.     <meta name="keywords" content="编码解码工具, URL编码, URL解码, encodeURI解码, encodeURIComponent解码, URL参数分割, Base64编码, Base64解码, 在线工具">
  11.     <meta name="robots" content="index, follow">
  12.     <meta property="og:title" content="在线编码解码工具">
  13.     <meta property="og:description" content="使用我们的工具轻松进行URL编码、URL解码、encodeURI解码、encodeURIComponent解码、URL参数分割、Base64编码和Base64解码。">
  14.     <meta property="og:image" content="">
  15.     <meta property="og:url" content="">
  16.     <meta property="og:type" content="website">
  17.     <meta name="author" content="">
  18.     <link rel="canonical" href="">
  19.     <link rel="icon" href="logo.jpg" type="image/x-icon">
  20.     <link rel="shortcut icon" href="logo.jpg" type="image/x-icon">
  21.     <style>
  22.         *{
  23.             padding: 0;
  24.             margin: 0;
  25.             font-family: "Segoe UI","Lucida Grande",Helvetica,Arial,"Microsoft YaHei",FreeSans,Arimo,"Droid Sans","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3",FontAwesome,sans-serif;
  26.         }
  27.         body {
  28.             padding: 20px;
  29.             background: #f2f3f3;
  30.         }
  31.         /*PC AND PAD*/
  32.         [url=home.php?mod=space&uid=945662]@media[/url] screen and (min-width: 640px) and (max-width: 2000px) {
  33.             .container {
  34.                 margin: 30px auto;
  35.                 width: 60%;
  36.             }
  37.         }
  38.         /*PHONE*/
  39.         @media screen and (max-width: 639px) {
  40.             .container {
  41.                 margin: 30px auto;
  42.                 width: 100%;
  43.             }
  44.         }
  45.         .text-center {
  46.             margin: 25px 0;
  47.         }
  48.         textarea {
  49.             resize: none;
  50.             overflow: hidden;
  51.         }
  52.         button {
  53.             margin-bottom: 10px;
  54.         }
  55.     </style>
  56. </head>
  57. <body>
  58.     <div class="container">
  59.         <h2 class="text-center">编码解码字符处理在线工具</h2>
  60.         <div class="mb-3">
  61.             <label for="inputText" class="form-label">输入文本:</label>
  62.             <textarea id="inputText" class="form-control" rows="8"></textarea>
  63.         </div>
  64.         <div class="mb-3 text-center">
  65.             <button id="encodeBtn" class="btn btn-primary me-2">URL 编码</button>
  66.             <button id="decodeURIBtn" class="btn btn-secondary me-2">encodeURI 解码</button>
  67.             <button id="decodeURIComponentBtn" class="btn btn-secondary me-2" title="对特殊符号解码">encodeURIComponent 解码</button>
  68.             <button id="splitParamsBtn" class="btn btn-secondary me-2">URL参数分割</button>
  69.             <button id="encodeBase64Btn" class="btn btn-success me-2">Base64 编码</button>
  70.             <button id="decodeBase64Btn" class="btn btn-warning">Base64 解码</button>
  71.         </div>
  72.         <div class="mb-3">
  73.             <label for="outputText" class="form-label">输出文本:</label>
  74.             <textarea id="outputText" class="form-control" rows="8" style="background: #eee;"></textarea>
  75.         </div>
  76.         <div class="text-center">
  77.             <button id="copyBtn" class="btn btn-secondary me-2">一键复制</button>
  78.         </div>
  79.     </div>

  80.     <script>
  81.         function autoResizeTextarea(textarea) {
  82.             textarea.style.height = 'auto';
  83.             textarea.style.height = textarea.scrollHeight + 'px';
  84.         }

  85.         document.getElementById('encodeBtn').addEventListener('click', function() {
  86.             const inputText = document.getElementById('inputText').value;
  87.             const encodedText = encodeURIComponent(inputText);
  88.             const outputTextarea = document.getElementById('outputText');
  89.             outputTextarea.value = encodedText;
  90.             autoResizeTextarea(outputTextarea);
  91.         });

  92.         document.getElementById('decodeURIBtn').addEventListener('click', function() {
  93.             const inputText = document.getElementById('inputText').value;
  94.             try {
  95.                 const decodedText = decodeURI(inputText);
  96.                 const outputTextarea = document.getElementById('outputText');
  97.                 outputTextarea.value = decodedText;
  98.                 autoResizeTextarea(outputTextarea);
  99.             } catch (e) {
  100.                 alert('解码错误,请确保输入的编码类型正确。');
  101.             }
  102.         });

  103.         document.getElementById('decodeURIComponentBtn').addEventListener('click', function() {
  104.             const inputText = document.getElementById('inputText').value;
  105.             try {
  106.                 const decodedText = decodeURIComponent(inputText);
  107.                 const outputTextarea = document.getElementById('outputText');
  108.                 outputTextarea.value = decodedText;
  109.                 autoResizeTextarea(outputTextarea);
  110.             } catch (e) {
  111.                 alert('解码错误,请确保输入的编码类型正确。');
  112.             }
  113.         });

  114.         document.getElementById('splitParamsBtn').addEventListener('click', function() {
  115.             const inputText = document.getElementById('inputText').value;
  116.             try {
  117.                 let params;
  118.                 if (inputText.includes('?')) {
  119.                     const url = new URL(inputText);
  120.                     params = new URLSearchParams(url.search);
  121.                 } else {
  122.                     params = new URLSearchParams(inputText);
  123.                 }
  124.                 let result = '';
  125.                 params.forEach((value, key) => {
  126.                     result += `${key}: ${value}\n`;
  127.                 });
  128.                 const outputTextarea = document.getElementById('outputText');
  129.                 outputTextarea.value = result;
  130.                 autoResizeTextarea(outputTextarea);
  131.             } catch (e) {
  132.                 alert('请输入有效的URL或参数字符串。');
  133.             }
  134.         });

  135.         document.getElementById('encodeBase64Btn').addEventListener('click', function() {
  136.             const inputText = document.getElementById('inputText').value;
  137.             const encodedText = btoa(inputText);
  138.             const outputTextarea = document.getElementById('outputText');
  139.             outputTextarea.value = encodedText;
  140.             autoResizeTextarea(outputTextarea);
  141.         });

  142.         document.getElementById('decodeBase64Btn').addEventListener('click', function() {
  143.             const inputText = document.getElementById('inputText').value;
  144.             try {
  145.                 const decodedText = atob(inputText);
  146.                 const outputTextarea = document.getElementById('outputText');
  147.                 outputTextarea.value = decodedText;
  148.                 autoResizeTextarea(outputTextarea);
  149.             } catch (e) {
  150.                 alert('解码错误,请确保输入的编码类型正确。');
  151.             }
  152.         });

  153.         document.getElementById('copyBtn').addEventListener('click', function() {
  154.             const outputText = document.getElementById('outputText');
  155.             outputText.select();
  156.             outputText.setSelectionRange(0, 99999); // 对移动设备的兼容
  157.             navigator.clipboard.writeText(outputText.value).then(() => {
  158.                 const copyBtn = document.getElementById('copyBtn');
  159.                 const originalText = copyBtn.textContent;
  160.                 copyBtn.textContent = '已复制';
  161.                 setTimeout(() => {
  162.                     copyBtn.textContent = originalText;
  163.                 }, 2000);
  164.             }).catch(err => {
  165.                 alert('复制失败,请手动复制');
  166.             });
  167.         });

  168.         document.getElementById('outputText').addEventListener('input', function() {
  169.             autoResizeTextarea(this);
  170.         });

  171.         window.addEventListener('load', function() {
  172.             document.querySelectorAll('textarea').forEach(autoResizeTextarea);
  173.         });
  174.     </script>

  175.     <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.1.3/js/bootstrap.bundle.min.js"></script>
  176. </body>
  177. </html>
复制代码
金黑分享,直接拿走

QQ|网站地图|Archiver|手机版|金黑 ( 粤ICP备2021124338号 )

网站建设,微信公众号小程序制作,商城系统开发,高端系统定制,app软件开发,智能物联网开发,直播带货系统等

Powered by Www.Jinhei.Cn

Copyright © 2013-2024 深圳市金黑网络技术有限公司 版权所有

快速回复 返回顶部 返回列表