现在的位置: 首页 > 综合 > 正文

javascript 编码解码

2012年06月01日 ⁄ 综合 ⁄ 共 2819字 ⁄ 字号 评论关闭
解决了对中文的不支持问题.
先用escape()对中文进行编码.然后再进行base64编码.
解码时,再加入unescape()对中文进行解码.

<html>
 
<head>

<title>base64 Encoding/Decoding</title>
 
</head>

 <script type="text/javascript"><!--

 var keyStr = "ABCDEFGHIJKLMNOP" +

"QRSTUVWXYZabcdef" +

"ghijklmnopqrstuv" +

"wxyz0123456789+/" +

"=";

 function encode64(input) {
input 
= escape(input);

var output = "";

var chr1, chr2, chr3 = "";

var enc1, enc2, enc3, enc4 = "";

var i = 0;

do {
 chr1 
= input.charCodeAt(i++);
 chr2 
= input.charCodeAt(i++);
 chr3 
= input.charCodeAt(i++);

 enc1 = chr1 >> 2;
 enc2 
= ((chr1 & 3<< 4| (chr2 >> 4);
 enc3 
= ((chr2 & 15<< 2| (chr3 >> 6);
 enc4 
= chr3 & 63;

 if (isNaN(chr2)) {
enc3 
= enc4 = 64;
 } 
else if (isNaN(chr3)) {
enc4 
= 64;
 }

 output = output + 
keyStr.charAt(enc1) 
+ 
keyStr.charAt(enc2) 
+ 
keyStr.charAt(enc3) 
+ 
keyStr.charAt(enc4);
 chr1 
= chr2 = chr3 = "";
 enc1 
= enc2 = enc3 = enc4 = "";
} 
while (i < input.length);

return output;
 }

 function decode64(input) {

var output = "";

var chr1, chr2, chr3 = "";

var enc1, enc2, enc3, enc4 = "";

var i = 0;

// remove all characters that are not A-Z, a-z, 0-9, +, /, or =
var base64test = /[^A-Za-z0-9\+\/\=]/g;

if (base64test.exec(input)) {
 alert(
"There were invalid base64 characters in the input text.\n" +
 
"Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" +
 
"Expect errors in decoding.");
}
input 
= input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

do {
 enc1 
= keyStr.indexOf(input.charAt(i++));
 enc2 
= keyStr.indexOf(input.charAt(i++));
 enc3 
= keyStr.indexOf(input.charAt(i++));
 enc4 
= keyStr.indexOf(input.charAt(i++));

 chr1 = (enc1 << 2| (enc2 >> 4);
 chr2 
= ((enc2 & 15<< 4| (enc3 >> 2);
 chr3 
= ((enc3 & 3<< 6| enc4;

 output = output + String.fromCharCode(chr1);

 if (enc3 != 64) {
output 
= output + String.fromCharCode(chr2);
 }
 
if (enc4 != 64) {
output 
= output + String.fromCharCode(chr3);
 }

 chr1 = chr2 = chr3 = "";
 enc1 
= enc2 = enc3 = enc4 = "";

} while (i < input.length);

return unescape(output);
 }

 //--></script>

 
<body>

<form name="base64Form">

 Type in the message you want to encode in base64, or paste<br>
 base64 encoded text into the text field, select Encode or Decode, 
<br>
 and click the button
!<br>

 <textarea name="theText" cols="40" rows="6"></textarea><br>

 <input type="button" name="encode" value="Encode to base64"
onClick
="document.base64Form.theText.value=encode64(document.base64Form.theText.value);">
 
<input type="button" name="decode" value="Decode from base64" 
onClick
="document.base64Form.theText.value=decode64(document.base64Form.theText.value);">

</form>

 </body>
</html>

抱歉!评论已关闭.