<html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> </head> <body> <input type="text" id="input" value="中文"> <input type="button" id="btn" value="urlencode"> <select id="charset"> <option value="gbk">gbk</option> <option value="big5">big5</option> <option value="utf-8">utf-8</option> </select> <div> 编码结果: <textarea style="display: block" id="output"></textarea> </div> <div> 解码: <input type="button" id="deBtn" value="urldecode"> <textarea style="display: block" id="outputDecode"></textarea> </div> <!--<img src="data:text/javascript;charset=gbk,window.a='%D6%D0%CE%C4'" id="d">--> <!--<script charset="gbk" src="data:text/javascript;charset=gbk,alert('%CE%C4')"></script>--> <script> /* var s=document.createElement('script'); s.charset='gbk'; var src=document.getElementById('d').src; alert(src); s.src=src; document.body.appendChild(s); setTimeout(function(){ alert(window.a) },300) */ function urlencode(str, charset, callback) { //创建form通过accept-charset做encode var form = document.createElement('form'); form.method = 'get'; form.style.display = 'none'; form.acceptCharset = charset; if (document.all) { //如果是IE那么就调用document.charset方法 window.oldCharset = document.charset; document.charset = charset; } var input = document.createElement('input'); input.type = 'hidden'; input.name = 'str'; input.value = str; form.appendChild(input); form.target = '_urlEncode_iframe_'; document.body.appendChild(form); //隐藏iframe截获提交的字符串 if (!window['_urlEncode_iframe_']) { var iframe; if(document.all){ try{ iframe = document.createElement('<iframe name="_urlEncode_iframe_"></iframe>'); }catch(e){ iframe = document.createElement('iframe'); //iframe.name = '_urlEncode_iframe_'; iframe.setAttribute('name', '_urlEncode_iframe_'); } }else{ iframe = document.createElement('iframe'); //iframe.name = '_urlEncode_iframe_'; iframe.setAttribute('name', '_urlEncode_iframe_'); } iframe.style.display = 'none'; iframe.width = "0"; iframe.height = "0"; iframe.scrolling = "no"; iframe.allowtransparency = "true"; iframe.frameborder = "0"; iframe.src = 'about:blank'; document.body.appendChild(iframe); } // window._urlEncode_iframe_callback = function(str) { callback(str); if (document.all) { document.charset = window.oldCharset; } } //设置回调编码页面的地址,这里需要用户修改 form.action = 'getEncodeStr.html'; form.submit(); setTimeout(function() { form.parentNode.removeChild(form); iframe.parentNode.removeChild(iframe); }, 500) } function urldecode(str, charset, callback) { var script = document.createElement('script'); script.id = '_urlDecodeFn_'; window._urlDecodeFn_ = callback; if (document.all) { if(navigator.userAgent.indexOf('MSIE 8')>-1){ //对于ie8做特别hack var link = document.createElement('link'); link.rel = 'stylesheet'; link.type = 'text/css'; link.charset = charset; link.href = 'data:text/plain;charset=' + charset + ',%23_decode_hidden_el_for_test_%7Bbackground-image%3Aurl(' + str + ')%7D'; alert(link.href); document.body.appendChild(link); //然后创建一个隐藏的div,应用这个样式 var div = document.createElement('div'); div.id = '_decode_hidden_el_for_test_'; div.style.display = 'none'; document.body.appendChild(div); setTimeout(function(){ callback(document.getElementById('_decode_hidden_el_for_test_').currentStyle['backgroundImage'].match(/\("data\:text\/(.+)"\)/)[1]); link.parentNode.removeChild(link); div.parentNode.removeChild(div); }, 300) }else{ //隐藏iframe截获提交的字符串 if (!window['_urlDecode_iframe_']) { var iframe; if(document.all){ try{ iframe = document.createElement('<iframe name="_urlDecode_iframe_"></iframe>'); }catch(e){ iframe = document.createElement('iframe'); //iframe.name = '_urlDecode_iframe_'; iframe.setAttribute('name', '_urlDecode_iframe_'); } }else{ iframe = document.createElement('iframe'); //iframe.name = '_urlDecode_iframe_'; iframe.setAttribute('name', '_urlDecode_iframe_'); } //iframe.name = '_urlDecode_iframe_'; iframe.setAttribute('name', '_urlDecode_iframe_'); iframe.style.display = 'none'; iframe.width = "0"; iframe.height = "0"; iframe.scrolling = "no"; iframe.allowtransparency = "true"; iframe.frameborder = "0"; iframe.src = 'about:blank'; document.body.appendChild(iframe); } //ie下需要指明charset,然后src=datauri才可以 iframe.contentWindow.document.write('<html><scrip' + 't charset="gbk" src="data:text/javascript;charset=gbk,parent._decodeStr_=\'' + str + '\'"></s'+'cript></html>'); setTimeout(function() { callback(_decodeStr_); iframe.parentNode.removeChild(iframe); }, 300) } } else { var src = 'data:text/javascript;charset=' + charset + ',_urlDecodeFn_("' + str + '");'; src += 'document.getElementById("_urlDecodeFn_").parentNode.removeChild(document.getElementById("_urlDecodeFn_"));'; script.src = src; document.body.appendChild(script); } } /**编码和解码 */ document.getElementById('btn').onclick = function() { urlencode(document.getElementById('input').value, document.getElementById('charset').value, function(str) { document.getElementById('output').value = str; }) } document.getElementById('deBtn').onclick = function() { urldecode(document.getElementById('output').value, document.getElementById('charset').value, function(str) { document.getElementById('outputDecode').value = str; }) } </script> </body> </html>
不能多说,demo链接 http://xueduany.github.io/KitJs/urlencode.html
博客链接 http://www.cnblogs.com/xueduanyang/archive/2013/05/30/3108442.html
相关推荐
JavaScript中的`encode`和`decode`是一组用于字符串编码解码的方法,它们在处理和传输数据时起到关键作用。在JavaScript中,常见的编码方法有`encodeURIComponent`、`decodeURIComponent`、`encodeURI`、`decodeURI`...
本项目"js-protobuf-encode-decode-master.zip"提供了一个在线工具,专门用于处理JavaScript环境下的Protobuf编码和解码操作。 Protobuf是一种由Google开发的数据序列化协议,它定义了一种二进制数据格式,比JSON...
在给定的代码中,作者提供了两个自定义的函数:`ShengUtils.encode`和`ShengUtils.decode`,分别实现了这个功能。 `ShengUtils.encode`函数的主要任务是对输入的字符串`unzipStr`进行URL编码。它首先创建一个空字符...
"jQuery JSON with PHP json_encode and json_decode"这个主题涉及到如何利用JSON(JavaScript Object Notation)这一轻量级的数据交换格式,结合PHP的`json_encode`和`json_decode`函数,实现前后端之间的数据通信...
在PHP中,`json_encode`和`json_decode`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码和解码。JSON是一种轻量级的数据交换格式,因其简洁、易读且易于机器解析而被广泛应用...
- Base64是一种在网络上传输二进制数据的方法,使用 `base64_encode()` 和 `base64_decode()` 函数。例如,`echo base64_encode("你好,世界!");`,解码则使用 `base64_decode()`。 4. **JSON编码与解码**: - ...
"前端项目-openlocationcode"是一个专为前端开发人员设计的JavaScript库,它实现了对OLC代码的解析和转换功能。这个库的主要功能包括: 1. **编码**:将经纬度坐标转换为OLC代码。开发者可以使用这个库来为用户的...
### 关于Base64编码及Java与JavaScript的...通过这些代码示例,开发者可以快速地集成Base64的功能到自己的应用中,无论是前端还是后端。同时,还介绍了如何配置日志输出,这对于调试和维护应用程序来说是非常重要的。
在PHP中,`json_decode()`和`json_encode()`是两个非常重要的函数,它们主要用于JSON(JavaScript Object Notation)数据格式的编码与解码。JSON是一种轻量级的数据交换格式,因其简洁、易于阅读和编写,同时也容易...
`jquery.base64.js`是一个jQuery插件,它提供了`.base64_encode()`和`.base64_decode()`方法,用于在JavaScript中实现Base64编码和解码。以下是如何使用这个库的例子: ```javascript // 引入jquery.base64.js ...
base64.js 是 Base64 的 JavaScript 实现。浏览器:[removed][removed]node.jsvar Base64 = require('./base64.js').Base64;示例:Base64.encode('dankogai'); // ZGFua29nYWk= Base64.encode('小飼弾'); // ...
在JavaScript中,Base64的加密与解密是前端开发中的常见需求,尤其在处理图像、JSON数据或者进行跨域通信时。本文将深入探讨JavaScript中的Base64原理及其在前端应用。 一、Base64编码原理 Base64编码将每3个8位...
2. **引入**:在JavaScript文件中,通过`require('msgpack-lite')`或`import { encode, decode } from 'msgpack-lite'`引入解码和编码函数。 3. **编码**:使用`encode()`函数将JavaScript对象转换为MessagePack格式...
同时,可能会用到一些PHP库,如数据库连接管理的PDO、缓存管理的Redis或Memcached,以及用于处理JSON数据的json_encode/decode等。 2. **数据库设计**:一个IM客服系统需要存储用户信息、聊天记录、在线状态等数据...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在PHP中,JSON常用于与前端交互,传输数据。PHP 4.0版本虽然相对较旧,但仍然可以处理JSON数据,只是...
PHP内置了DOM、SimpleXML和json_encode/decode等工具,用于处理XML和JSON数据。了解如何读取、创建和转换这两种数据格式,对于Web服务和API开发至关重要。 9. **缓存技术**: 使用PHP的APC、Memcached或Redis实现...
这个封装代码中,`base64Encode`函数接受一个字符串作为输入,将其转换为字节数组,再通过`btoa`进行Base64编码。`base64Decode`函数则接收一个Base64编码的字符串,先用`atob`解码,再将结果转换回原始字符串。 在...
import { encode as b32encode, decode as b32decode } from 'base32'; // Base64编码 let text = '你好,世界!'; let encoded64 = b64encode(text); console.log('Base64编码:', encoded64); // Base64解码 let ...