native转ascii工具(复制成html文件即可用)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0035)http://yunpan.cn/QvevyNkkunxSP -->
<html>
<head>
    <title>编码转换</title>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<center>
    <br/><div id="title1">编码转换页面</div><br/><br/>


    <textarea style="width:35%" rows="15" id="mytext" ></textarea>
    <textarea style="width:35%" rows="15" id="outtext" readonly='true' ></textarea>
    <br/><br/>


    <input type="button" value="查看ASCII码" οnclick="toAscii();" />
    <input type="button" value="ASCII解码" οnclick="fromAscii();" />
    <br/><br/>


    <input type="button" value="URI转码" οnclick="outputText.value=encodeURIComponent(inputText.value);" />
    <input type="button" value="URI解码" οnclick="try{outputText.value=decodeURIComponent(inputText.value);}catch(e){}" />
    &nbsp;|&nbsp;
    <input type="button" value="URL参数查看" οnclick="outputText.value=c$.json2str(c$.getRequestParams(inputText.value));" />
    <input type="button" value="转成URL" οnclick="toURL()" />
    <br/><br/>


    <input type="button" value="Unicode转码" οnclick="UnicodeEscape();" />
    <input type="button" value="Unicode转码(包括符号)" οnclick="UnicodeEscape(true);" />
    <input type="button" value="escape" οnclick="outputText.value=escape(inputText.value);" />
    <input type="button" value="Unicode解码" οnclick="UnicodeUnEscape();" />
    <br/><br/>


    <input type="button" value="HTML转码" οnclick="outputText.value=inputText.value.toHtml();" />
    <input type="button" value="HTML解码" οnclick="outputText.value=inputText.value.toText();" />
    <br/><br/>


    交流QQ群:26651479<br/>
    <div id="author" style="color: #33ccff"></div>
</center>
</body>
</html>


<script type="text/javascript">
// 输入框
var inputText = document.getElementById("mytext");
// 输出框
var outputText = document.getElementById("outtext");


// 转码
// 注意:html的编码是“%u”开头的,但java的却是“\u”开头,所以这里替换了
function UnicodeEscape(deep) {
    var str = inputText.value;
    var tem = "";
    // 替换中文等 非拉丁文
    // 注: escape 不会编码的字符:  *  +  -  .  /  @  _  0-9  a-z  A-Z
    tem = escape(str).replace(new RegExp('%u[0-9a-f]{4}', 'gim'), function(match) {
        return '\\' + match.substring(1);
    });
    // 深转码, 替换英文符号。
    if (deep === true) {
        tem = tem.replace(new RegExp('%[0-9a-f]{2}', 'gim'), function(match) {
            return "\\u00" + match.substring(1);
        });
    }
    // 不转换英文符号时,需还原这些符号
    else {
        tem = unescape(tem);
    }
    outputText.value = tem;
}


// 解码
function UnicodeUnEscape(method) {
    var str = inputText.value;
    //百分号替换成斜杠
    str = str.replace(/\\u/gim, "%u");
    outputText.value = unescape(str);
}


// 查看ASCII码
function toAscii() {
    var str = inputText.value;
    var arr = str.split(''); // 将字符串分解成数组
    for (var i=0, length = arr.length; i < length; i++) {
        var tem = arr[i].charCodeAt(0);
        // 处理换行符,换行不转换,以便查看
        if (tem == 10) arr[i] = '\r\n';  //  \n 符号
        else if (tem == 13) arr[i] = ''; //  \r 符号
        // 各编码以空格分隔
        else if (i < length - 1 && arr[i+1].charCodeAt(0) != 10 && arr[i+1].charCodeAt(0) != 13) arr[i] = tem + ' ';
        // 如果需要换行,则不加空格
        else arr[i] = tem;
    }
    outputText.value = arr.join('');
}


// 将输入的ASCII反过来查看
function fromAscii() {
    var str = inputText.value;
    // 字符串按空格或者逗号分隔
    var str2 = str.replace(/[ ]+|[,]+/gm, ' ').replace(/\n+/gm, ' \n ');
    // 要求每个输入的都是数值,否则无法处理
    if ( new RegExp("^[0-9]+$").test(str2.replace(/(\s|\r|\n)/gm, '')) === false ) {
        window.alert('输入的ASCII码必须每个都是数字,且用空格或者逗号分隔!');
        return;
    }
    var arr = str2.split(' '); // 将字符串分解成数组
    for (var i=0, length = arr.length; i < length; i++) {
        var tem = arr[i];
        // 处理换行符,换行不转换,以便查看
        if (tem.charCodeAt(0) == 10) arr[i] = '\r\n'; //  \n 符号
        else if (tem.charCodeAt(0) == 13) arr[i] = ''; //  \r 符号
        else {
            var temNum = tem >> 0; // 转成 int 类型
            arr[i] = String.fromCharCode(temNum);
        }
    }
    outputText.value = arr.join('');
}


// 转成URL
function toURL() {
    try
    {
        eval('var data='+inputText.value);
        outputText.value=c$.toQueryStr(data);
    }
    catch(e){
        alert('必须输入json格式的内容才可以转换!如:\n{a:1,b:"名称"}');
    }
}


(function() {
     var s = "%u4F5C%u8005%3A%u51AF%u4E07%u91CC%3Cbr/%3E%0D%0A%u8054%u7CFBQQ%3A292598441%3Cbr/%3E%0D%0A";
     s += "%u90AE%u7BB1%3Adaillow@gmail.com%3Cbr/%3E%0D%0A%u66F4%u65B0%u65F6%u95F4%3A";
     document.getElementById("author").innerHTML = unescape(s) + new Date(document.lastModified).toLocaleString();
})();






/**
 * <P> Title: JavaScript Util                        </P>
 * <P> Description: JavaScript 工具                  </P>
 * <P> Modify: 2013/02/08                            </P>
 * @author 冯万里
 * @version 1.0
 *
 * 为减少 js 关键词的占用,此工具类只占用“c$”一个关键词;
 * 使用时用: c$.函数名(参数列表); 或者 c$().函数名(参数列表)
 * 字符串操作函数、日期操作函数、数组操作函数等,直接增加到 String、Date、Array 类里面,便于直接使用
 */
(function(window, undefined) {


var document = window.document,
navigator = window.navigator,
location = window.location;


/**
 * 定义 c$ 类
 */
c$ = window.c$ = function() {
    return c$;
};


/**
 * 这是错误调试程序
 * 当页面发生错误时,提示错误讯息;仅测试环境里会提示,正式环境下不提示错误。
 * 注意:仅IE、fiefox有效,w3c标准里面没有此定义, chrome、opera 和 safari 浏览器不支持此事件
 */
window.onerror = function(msg, url, sLine) {
    var hostUrl = window.location.href;
    // 判断网址,测试时可以提示出错信息;正式发布时不提示
    if (hostUrl.indexOf("http://localhost") === 0 || hostUrl.indexOf("http://127.0.0.1") === 0 ||
        hostUrl.indexOf("http://192.168.") === 0 || hostUrl.indexOf("file://") === 0) {
        var errorMsg = "当前页面的javascript发生错误.\n\n";
        errorMsg += "错误: " + msg + "\n";   // 出错信息
        errorMsg += "URL: " + url + "\n";    // 出错文件的地址
        errorMsg += "行: " + sLine + "\n\n"; // 发生错误的行
        errorMsg += "点击“确定”以继续。\n\n";
        window.alert( errorMsg );
    }
    // 返回true,会消去 IE下那个恼人的“网页上有错误”的提示
    return true;
};


/**
 * 转换字符串成 Html 页面上显示的编码
 * @return {String} 转换后的字符串
 * @example "<div>".toHtml() 返回: "&lt;div&gt;"
 */
String.prototype.toHtml = function() {
    var div = document.createElement('div');
    var text = document.createTextNode(this);
    div.appendChild(text);
    return div.innerHTML;
};


/**
 * 转换字符串由 Html 页面上显示的编码变回正常编码(与 toHtml 函数对应)
 * @return {String} 转换后的字符串
 * @example "&nbsp;".toText() // 返回: " "
 */
String.prototype.toText = function() {
    var div = document.createElement("div");
    div.innerHTML = this;
    return div.innerText || div.textContent || '';
};


/**
 * 把时间格式化成字符串
 * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符
 * 年(y)可以用 1-4 个占位符, 周(E)可以用 1-3 个占位符, 毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
 * @param  {String} format 格式化的字符串(默认为:yyyy-MM-dd HH:mm:ss )
 * @return {String} 格式化时间后的字符串
 * @example alert(new Date().format("yyyy-MM-dd HH:mm:ss.S EEE")); // 显示如: "2013-01-29 17:01:13.25 星期二"
 */
Date.prototype.format = function(format) {
    // 默认显示格式
    format = format || "yyyy-MM-dd HH:mm:ss";
    var o = {
        "M{1,2}" : this.getMonth()+1, // 月份  (返回1~12,或者01~12)
        "d{1,2}" : this.getDate(), // 日期  (返回1~31,或者01~31)
        "h{1,2}" : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, // 小时  (返回1~12,或者01~12)
        "H{1,2}" : this.getHours(), // 小时  (返回1~23,或者01~23)
        "m{1,2}" : this.getMinutes(), // 分钟  (返回1~59,或者01~59)
        "s{1,2}" : this.getSeconds(), // 秒  (返回1~59,或者01~59)
        "q{1,2}" : Math.floor((this.getMonth()+3)/3), // 季度  (返回1~4,或者01~04)
        "S" : this.getMilliseconds() // millisecond  (返回1~999,或者01~99) 注意,“S”只能写一个
    }
    // 年份
    if (/([y|Y]{1,4})/.test(format)) {
        format = format.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
    }
    // 星期
if (/(E{1,3})/.test(format)) {
        var week = { "0" : "\u65e5", "1" : "\u4e00", "2" : "\u4e8c", "3" : "\u4e09", "4" : "\u56db", "5" : "\u4e94", "6" : "\u516d" };
format = format.replace(RegExp.$1, ((RegExp.$1.length >= 2) ? (RegExp.$1.length == 3 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
    }
    // 其余逐个处理
    for (var k in o) {
        if (new RegExp("("+ k +")").test(format)) {
            format = format.replace(RegExp.$1, (RegExp.$1.length == 1 ? o[k] :("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
    return format;
};


/**
 * 分解URL请求参数
 * @param  {String} href 网址;没有参数时默认使用所在网页的网址
 * @param  {Boolean} key2lowerCase 是否需要将key转成小写,为true则转成小写,否则不转(默认不干涉)
 * @return {Object} 返回json形式的参数内容
 * @example c$.getRequestParams("http://localhost/index.html?d2d=%E5%93%88%E5%93%88&dd=oo111") // 返回对象: {d2d:'哈哈', dd:'oo111'}
 */
c$.getRequestParams = function(href, key2lowerCase) {
    href = href || location.href;
    var result = {};
    var regex = /(\w+)=([^&]*)/gi;
    var ms = href.match(regex);
    if (ms == null) return result;


    for(var i = 0, length = ms.length; i < length; i++) {
        var ns = ms[i].match(regex);
        var key = RegExp.$1;
        key = key2lowerCase ? ("" + key).toLowerCase() : key;
        try {
            result[key] = decodeURIComponent(RegExp.$2); // 转码需要完全转
            result[key] = result[key].replace('+', ' '); // 空格会变成加号
        }catch(e){}
    }


    return result;
};


/**
 * 把对象格式化成 URL 的参数形式
 * @param  {Object} obj 需要转成参数的对象
 * @param  {String} href 网址; 没有网址则只返回格式化后的参数部分,有网址则拼接到网址上(还会修改网址上原有的值)
 * @param  {Boolean} key2lowerCase 是否需要将key转成小写,为true则转成小写,否则不转(默认不干涉)
 * @return {String} 返回编码后的字符串
 * @example
 *  c$.toQueryStr({d2d:'看看', b:2}, "http://localhost/index.html?d2d=哈哈&dd=oo111") // 返回: "http://localhost/index.html?d2d=%E7%9C%8B%E7%9C%8B&dd=oo111&b=2"
 *  c$.toQueryStr({d2d:'哈哈', b:2}) // 返回: "d2d=%E5%93%88%E5%93%88&b=2"
 */
c$.toQueryStr = function(obj, href, key2lowerCase) {
    if (!href || typeof href != 'string') {
        href = "";
    }
    // 把网址上的参数拼接到 obj 类里面
    else {
        if (!obj || typeof obj != 'object') {
            obj = c$.getRequestParams(href, key2lowerCase);
        } else {
            obj = c$.extend(c$.getRequestParams(href, key2lowerCase), obj);
        }
    }


    // 截取出网址(去掉参数部分)
    var index = href.indexOf("?");
    if (index > 0) href = href.substring(0, index) + '?';


    var parts = [];
    for (var key in obj) {
        key = key2lowerCase ? ("" + key).toLowerCase() : key;
        parts.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
    }
    href += parts.join('&');
    return href;
};


/**
 * 类的扩展
 * @param {Object} destination 被扩展的类
 * @param {Object} source 要扩展的内容(没有此参数则直接扩展到 c$ 类里面)
 * @param {Boolean} rewrite 是否重写属性/方法
 * @return {Object} 扩展后的类(可以不接收参数,原被扩展的类会被修改而引用不变)
 *
 * @example
 *  var a = new Object();
 *  c$.extend(a, {
 *      alertStr: function(str){alert(str);}
 *  });
 *  a.alertStr('要提示的内容'); // 调用
 */
c$.extend = function(destination, source, rewrite) {
    source = source || this;
    for (var property in source) {
        if (rewrite || null == destination[property]) {
            destination[property] = source[property];
        }
    }
    return destination;
};


/**
 * 将 JSON 对象内容转成字符串(注:中文会被url转码)
 * @param  {Object} obj 被转换的JSON对象
 * @param  {Boolean} encode 是否需要将key和value使用encodeURI转码
 * @param  {Boolean} key2lowerCase 是否需要将key转成小写,为true则转成小写,否则不转
 * @return {String} 返回字符串形式的json内容
 * @example
 *    c$.json2str({a:1, b:[1,'2',3], c:'哈哈'}) // 返回字符串: '{"a":1,"b":[1,"2",3],"c":"哈哈"}'
 *    c$.json2str({a:1, b:[1,'2',3], c:'哈哈'}, true) // 返回字符串: '{"a":1,"b":[1,"2",3],"c":"%E5%93%88%E5%93%88"}'
 */
c$.json2str = function (obj, encode, key2lowerCase) {
    var arr = [];
    // undefined, null, false, 0, NaN, ''
    if (!obj) return "" + obj;
    // 转换字符串
    var format = function(value) {
        // 对字符串的处理,URI转码, 以便提交数据
        if (typeof value == 'string') return '"' + (encode ? encodeURIComponent(value) : value) + '"';
        // 处理 日期
        if (value && value.constructor == Date) return '"' + value.format() + '"';
        // 处理 数组
        if (value && value.constructor == Array) {
            // 使用临时变量,避免修改源数据
            var temArr = [];
            for (var i=0; i < value.length; i++) {
                if (typeof value[i] == 'function') continue; // 自添加的函数,不用转换
                temArr.push(format(value[i]));
            }
            return '[' + temArr.join(',') + ']';
        }
        // 如果是 函数
        if (typeof value == 'function') try { return format(value());}catch(e){ return value + ""; };
        // 如果是 object, 这里认为是 json,递归调用
        if (typeof value == 'object' && value != null) return c$.json2str(value, encode, key2lowerCase);
        // undefined, null, bool, number 类型,直接返回
        return value;
    }
    // bool, number, string, function, 数组
    if (typeof obj != 'object' || obj.constructor == Array) return format(obj);
    for (var key in obj) {
        // 将key转成小写
        var tem_key = key2lowerCase ? ("" + key).toLowerCase() : key;
        arr.push('"' + (encode ? encodeURIComponent(tem_key) : tem_key) + '":' + format(obj[key]));
    }
    // 为了方便查看
    return '{\r\n  ' + arr.join(',\r\n  ') + '\r\n}';
};


})(window);
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值