来自 新葡亰运维 2019-11-25 05:52 的文章
当前位置: 澳门新葡亰app > 新葡亰运维 > 正文

澳门新葡亰app:UTF8编码函数,查询的时候页面是

一:UTF8编码函数 复制代码 代码如下: function URLEncode{ if return ""; var newStr=""; function toCase{ return sStr.toString; } for(var i=0,icode,len=Str.length;i=0x30&&icode<=0x39)||(icode>=0x41&&icode<=0x5A)||(icode>=0x61&&icode<=0x7A)) newStr+=Str.charAt; else newStr+="%"+toCase; } else if{ newStr+="%"+toCase; newStr+="%"+toCase; } else{ newStr+="%"+toCase; newStr+="%"+toCase; newStr+="%"+toCase; } } return newStr; } 二:Base64编码,解码函数 复制代码 代码如下: var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64DecodeChars = new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); function base64encode { var out, i, len; var c1, c2, c3; len = str.length; i = 0; out = ""; while { c1 = str.charCodeAt & 0xff; if { out += base64EncodeChars.charAt; out += base64EncodeChars.charAt; out += "=="; break; } c2 = str.charCodeAt { out += base64EncodeChars.charAt; out += base64EncodeChars.charAt | ; out += base64EncodeChars.charAt; out += "="; break; } c3 = str.charCodeAt; out += base64EncodeChars.charAt; out += base64EncodeChars.charAt | ; out += base64EncodeChars.charAt | ; out += base64EncodeChars.charAt; } return out; } function base64decode { var c1, c2, c3, c4; var i, len, out; len = str.length; i = 0; out = ""; while { /* c1 */ do { c1 = base64DecodeChars[str.charCodeAt & 0xff]; } while; if break; /* c2 */ do { c2 = base64DecodeChars[str.charCodeAt & 0xff]; } while; if break; out += String.fromCharCode | ; /* c3 */ do { c3 = str.charCodeAt & 0xff; if return out; c3 = base64DecodeChars[c3]; } while; if break; out += String.fromCharCode | ; /* c4 */ do { c4 = str.charCodeAt & 0xff; if return out; c4 = base64DecodeChars[c4]; } while; if break; out += String.fromCharCode | c4); } return out; } function utf16to8 { var out, i, len, c; out = ""; len = str.length; for { c = str.charCodeAt && { out += str.charAt; } else if { out += String.fromCharCode & 0x0F)); out += String.fromCharCode & 0x3F)); out += String.fromCharCode & 0x3F)); } else { out += String.fromCharCode & 0x1F)); out += String.fromCharCode & 0x3F)); } } return out; } function utf8to16 { var out, i, len, c; var char2, char3; out = ""; len = str.length; i = 0; while { c = str.charCodeAt { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: // 0xxxxxxx out += str.charAt; break; case 12: case 13: // 110x xxxx 10xx xxxx char2 = str.charCodeAt; out += String.fromCharCode | ; break; case 14: // 1110 xxxx 10xx xxxx 10xx xxxx char2 = str.charCodeAt; char3 = str.charCodeAt; out += String.fromCharCode | | ; break; } } return out; } function doit() { var f = document.f f.output.value = base64encode(utf16to8 f.decode.value = utf8to16(base64decode } 12下一页阅读全文

为什么需要对参数进行编码?相信有过开发的经验的广大程序员都知道,在Web中,若是直接在Url地址上传递参数值,若是中文,或者+等什么的就会出现乱码现象,若是数字或者英文的好象没有什么问题,简言之,传递过来的参数是需要进行编码的。在这里,也许有人会说,为什么不直接用Server.UrlDecode和Server.UrlEncode这两个来进行编码和解码的操作呢?的确,这两个服务器端对象很好使用,用起来也很方便,但是,若在客户端是HTML的Input,查询的时候页面是HTML或者其他的,反正不是.NET的,那这个对象还可以用吗?我现在就遇到这样的问题,查询的东东放在页面,而且那个页面我根本不想让他是.aspx结尾的,哈,感觉HTML的挺不错,而且里面的控件也是用HTML对象的。下面先来看两个函数,UTF16转UTF8和UTF8转Utf16的。function utf16to8 { var out, i, len, c;

out = ""; len = str.length; for {c = str.charCodeAt && { out += str.charAt;} else if { out += String.fromCharCode & 0x0F)); out += String.fromCharCode & 0x3F)); out += String.fromCharCode & 0x3F));} else { out += String.fromCharCode & 0x1F)); out += String.fromCharCode & 0x3F));} } return out;}

function utf8to16 { var out, i, len, c; var char2, char3;

out = ""; len = str.length; i = 0; while {c = str.charCodeAt{ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: // 0xxxxxxx out += str.charAt; break; case 12: case 13: // 110x xxxx 10xx xxxx char2 = str.charCodeAt; out += String.fromCharCode | ; break; case 14: // 1110 xxxx 10xx xxxx 10xx xxxx char2 = str.charCodeAt; char3 = str.charCodeAt; out += String.fromCharCode | | ; break;} }

return out;}那么为什么需要进行转化呢?因为在JavaScript中获得的中文字符是用UTF16进行编码的,和我们统一的页面标准格式UTF-8可不一样哦,所以需要先进行转化,上面的函数UTF-16到UTF8,然后再进行Base64的编码。下面是关于Js进行Base64编码和解码的相关操作:var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var base64DecodeChars = new Array( -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1);//客户端Base64编码function base64encode { var out, i, len; var c1, c2, c3;

len = str.length; i = 0; out = ""; while {c1 = str.charCodeAt & 0xff;if{ out += base64EncodeChars.charAt; out += base64EncodeChars.charAt; out += "=="; break;}c2 = str.charCodeAt{ out += base64EncodeChars.charAt; out += base64EncodeChars.charAt | ; out += base64EncodeChars.charAt; out += "="; break;}c3 = str.charCodeAt;out += base64EncodeChars.charAt;out += base64EncodeChars.charAt | ;out += base64EncodeChars.charAt | ;out += base64EncodeChars.charAt; } return out;}//客户端Base64解码function base64decode { var c1, c2, c3, c4; var i, len, out;

len = str.length; i = 0; out = ""; while {/* c1 */do { c1 = base64DecodeChars[str.charCodeAt & 0xff];} while;if break;

/* c2 */do { c2 = base64DecodeChars[str.charCodeAt & 0xff];} while;if break;

out += String.fromCharCode | ;

澳门新葡亰官网APP,/* c3 *澳门新葡亰app,/do { c3 = str.charCodeAt & 0xff; if return out; c3 = base64DecodeChars[c3];} while;if break;

out += String.fromCharCode | ;

/* c4 */do { c4 = str.charCodeAt & 0xff; if return out; c4 = base64DecodeChars[c4];} while;if break;out += String.fromCharCode | c4); } return out;}这样传递过去的值就可以在服务器端解码操作了。下面是C#的Base64加码和解码的相关类:using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;

namespace CNVP.Base64{ /// /// MyBase64 的摘要说明 /// public class MyBase64 { public MyBase64() { // // TODO: 在此处添加构造函数逻辑 // } /// /// 服务器端Base64编码 /// /// /// public string base64Encode { try { byte[] encData_byte = new byte[data.Length]; encData_byte = System.Text.Encoding.UTF8.GetBytes; string encodedData = Convert.ToBase64String; return encodedData; } catch { throw new Exception("Error in base64Encode" + e.Message); } } /// /// 服务器端Base64解码 /// /// /// public string base64Decode { try { System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); System.Text.Decoder utf8Decode = encoder.GetDecoder(); byte[] todecode_byte = Convert.FromBase64String; int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); char[] decoded_char = new char[charCount]; utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0); string result = new String; return result; } catch { throw new Exception("Error in base64Decode" + e.Message); } } }} var Keyword=base64encode(utf16to8(document.all.Keyword.value)); Keyword=Keyword.replace;//替换+,否则在服务器解码的时候会出错服务器端使用以下代码调用: CNVP.Base64.MyBase64 base64 = new CNVP.Base64.MyBase64(); Keyword=base64.base64Decode;

本文由澳门新葡亰app发布于新葡亰运维,转载请注明出处:澳门新葡亰app:UTF8编码函数,查询的时候页面是

关键词: