1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title></title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <style type="text/css">
  7. <!--
  8. body{
  9. margin:0px;
  10. padding:0px;
  11. }
  12. body,td{
  13. font-size:9pt;
  14. }
  15. -->
  16. </style>
  17. <script type="text/javascript">
  18. <!--
  19. var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  20. //将Ansi编码的字符串进行Base64编码
  21. function encode64(input) {
  22. var output = "";
  23. var chr1, chr2, chr3 = "";
  24. var enc1, enc2, enc3, enc4 = "";
  25. var i = 0;
  26. do {
  27. chr1 = input.charCodeAt(i++);
  28. chr2 = input.charCodeAt(i++);
  29. chr3 = input.charCodeAt(i++);
  30. enc1 = chr1 >> 2;
  31. enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  32. enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  33. enc4 = chr3 & 63;
  34. if (isNaN(chr2)) {
  35. enc3 = enc4 = 64;
  36. } else if (isNaN(chr3)) {
  37. enc4 = 64;
  38. }
  39. output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)
  40. + keyStr.charAt(enc3) + keyStr.charAt(enc4);
  41. chr1 = chr2 = chr3 = "";
  42. enc1 = enc2 = enc3 = enc4 = "";
  43. } while (i < input.length);
  44. return output;
  45. }
  46. //将Base64编码字符串转换成Ansi编码的字符串
  47. function decode64(input) {
  48. var output = "";
  49. var chr1, chr2, chr3 = "";
  50. var enc1, enc2, enc3, enc4 = "";
  51. var i = 0;
  52. if (input.length % 4 != 0) {
  53. return "";
  54. }
  55. var base64test = /[^A-Za-z0-9\+\/\=]/g;
  56. if (base64test.exec(input)) {
  57. return "";
  58. }
  59. do {
  60. enc1 = keyStr.indexOf(input.charAt(i++));
  61. enc2 = keyStr.indexOf(input.charAt(i++));
  62. enc3 = keyStr.indexOf(input.charAt(i++));
  63. enc4 = keyStr.indexOf(input.charAt(i++));
  64. chr1 = (enc1 << 2) | (enc2 >> 4);
  65. chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  66. chr3 = ((enc3 & 3) << 6) | enc4;
  67. output = output + String.fromCharCode(chr1);
  68. if (enc3 != 64) {
  69. output += String.fromCharCode(chr2);
  70. }
  71. if (enc4 != 64) {
  72. output += String.fromCharCode(chr3);
  73. }
  74. chr1 = chr2 = chr3 = "";
  75. enc1 = enc2 = enc3 = enc4 = "";
  76. } while (i < input.length);
  77. return output;
  78. }
  79. function utf16to8(str) {
  80. var out, i, len, c;
  81. out = "";
  82. len = str.length;
  83. for(i = 0; i < len; i++) {
  84. c = str.charCodeAt(i);
  85. if ((c >= 0x0001) && (c <= 0x007F)) {
  86. out += str.charAt(i);
  87. } else if (c > 0x07FF) {
  88. out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
  89. out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
  90. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  91. } else {
  92. out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
  93. out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
  94. }
  95. }
  96. return out;
  97. }
  98. function utf8to16(str) {
  99. var out, i, len, c;
  100. var char2, char3;
  101. out = "";
  102. len = str.length;
  103. i = 0;
  104. while(i < len) {
  105. c = str.charCodeAt(i++);
  106. switch(c >> 4) {
  107. case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
  108. // 0xxxxxxx
  109. out += str.charAt(i-1);
  110. break;
  111. case 12: case 13:
  112. // 110x xxxx 10xx xxxx
  113. char2 = str.charCodeAt(i++);
  114. out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
  115. break;
  116. case 14:
  117. // 1110 xxxx 10xx xxxx 10xx xxxx
  118. char2 = str.charCodeAt(i++);
  119. char3 = str.charCodeAt(i++);
  120. out += String.fromCharCode(((c & 0x0F) << 12) |
  121. ((char2 & 0x3F) << 6) |
  122. ((char3 & 0x3F) << 0));
  123. break;
  124. }
  125. }
  126. return out;
  127. }
  128. // 测试代码 开始
  129. var de = encode64(utf16to8("你好世界"));
  130. document.writeln(de+"<br>");
  131. var ee = utf8to16(decode64(de))
  132. document.writeln(ee);
  133. // 测试代码 结束
  134. //-->
  135. </script>
  136. </head>
  137. <body>
  138. </body>
  139. </html>

js 中文字符串转base64的更多相关文章

  1. js jQuery中文字符串比较

    先说下普通字符串(英文)比较: 一般使用双等来判断(==),如果还需要类型相同那么就用三等(===) 1. 双等(==)是完全向后兼容的,如果两个操作数类型不一致,它会在某些时候自动对操作数进行类型转 ...

  2. js中文输入法字符串截断

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. js 验证字符串是否全为中文

    js 验证字符串是否全为中文: function isChinese(str) { var reg = /^[\u4E00-\u9FA5]+$/; if(reg.test(str)){ return ...

  4. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  5. node.js中文资料导航 Mark

    Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...

  6. 【干货分享】Node.js 中文资料导航

    这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...

  7. node.js中文资料导航

    以下资料来自gitHUb上面:https://github.com/youyudehexie/node123 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系 ...

  8. Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  9. [转载]fullPage.js中文api 配置参数~

    fullPage.js中文api 配置参数 选项 类型 默认值 说明 verticalCentered 字符串 true 内容是否垂直居中 resize 布尔值 false 字体是否随着窗口缩放而缩放 ...

随机推荐

  1. mysql 使用zip包进行安装以及服务启动后立即关闭问题

             本实例使用的mysql版本为 mysql-8.0.15-winx64 1.下载zip包 官网地址:https://dev.mysql.com/downloads/mysql/ 2.安 ...

  2. Docker_云计算技术简述

    Docker官方网站 > https://www.docker.com/Docker博客 > https://www.docker.com/blog/Docker内容库 > http ...

  3. C语言求π的方法

    #include <stdio.h> #include <math.h> int main() { int r; double PI,s; scanf("%d&quo ...

  4. BPR贝叶斯个性化排序算法

    全序关系:集合中的任两个元素之间都可以比较的关系.

  5. 在RecyclerView中集成QQ汽泡二

    上次已经将GooView集成到RecyclerView当中了[http://www.cnblogs.com/webor2006/p/7787511.html],但是目前还有很多问题,下面先来运行看一下 ...

  6. want

    2-SAT POJ3683 操作树 仙人掌 HDU3594 平衡树 916D 可持久化Trie https://www.cnblogs.com/jszkc/p/7309468.html Lindstr ...

  7. (八)zabbix获取到的数值自定义单位

    1) 查找php文件 # find / -name "func.inc.php" /usr/share/zabbix/include/func.inc.php 2)修改文件 #vi ...

  8. 函数参数-arguments-reset参数

    1.JS中用:arguments 1)存放实参的集合,是一个类似于数组的对象,只有数组的 length,没有数组方法 function add1(a,b,c) { console.log(argume ...

  9. Java-WEB开发常用方法整理

    /** * 此类中收集Java编程中WEB开发常用到的一些工具. * 为避免生成此类的实例,构造方法被申明为private类型的. * @author */ import java.io.IOExce ...

  10. beautifulsoap常用取节点方法

    取某个class的元素 soup.find('div', {'class', 'description'}) 取某个属性的值 download_content.find('li').find('a') ...