茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JS實(shí)現(xiàn)對中文字符串進(jìn)行utf-8的Base64編碼的方法(使其與Java編碼相同)
    來源:易賢網(wǎng) 閱讀:2434 次 日期:2016-07-12 16:29:52
    溫馨提示:易賢網(wǎng)小編為您整理了“JS實(shí)現(xiàn)對中文字符串進(jìn)行utf-8的Base64編碼的方法(使其與Java編碼相同)”,方便廣大網(wǎng)友查閱!

    本文實(shí)例講述了JS實(shí)現(xiàn)對中文字符串進(jìn)行utf-8的Base64編碼的方法。分享給大家供大家參考,具體如下:

    要進(jìn)行編碼的字符串:“select 用戶名 from 用戶”

    使用JAVA進(jìn)行編碼,Java程序:

    String sql = "select 用戶名 from 用戶";

    String encodeStr = new String(Base64.encode(sql.getBytes("UTF-8"))); // 編碼

    System.out.println(encodeStr);

    得到:

    c2VsZWN0IOeUqOaIt+WQjSBmcm9tIOeUqOaItw==

    在Java中解碼:

    sql = new String(Base64.decode(sql.getBytes()), "UTF-8");

    Java代碼中為什么要使用getBytes("UTF-8")呢?因?yàn)閃indows和Linux環(huán)境下默認(rèn)編碼不同,要使你的程序在不同平臺下得到相同編碼,必然要指定編碼

    雖然Html和JS的編碼都是utf-8,但JS從頁面上得到的中文編碼卻是utf-16,所以直接對中文進(jìn)行Base64編碼將得到錯誤的結(jié)果,所以我們要先從utf-16轉(zhuǎn)到utf-8再編碼

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <title></title>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <style type="text/css">

    <!--

    body{

     margin:0px;

     padding:0px;

    }

    body,td{

     font-size:9pt;

    }

    -->

    </style>

    <script type="text/JavaScript">

    <!--

    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

    //將Ansi編碼的字符串進(jìn)行Base64編碼

    function encode64(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;

    }

    //將Base64編碼字符串轉(zhuǎn)換成Ansi編碼的字符串

    function decode64(input) {

    var output = "";

    var chr1, chr2, chr3 = "";

    var enc1, enc2, enc3, enc4 = "";

    var i = 0;

    if (input.length % 4 != 0) {

    return "";

    }

    var base64test = /[^A-Za-z0-9\+\/\=]/g;

    if (base64test.exec(input)) {

    return "";

    }

    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 += String.fromCharCode(chr2);

    }

    if (enc4 != 64) {

    output += String.fromCharCode(chr3);

    }

    chr1 = chr2 = chr3 = "";

    enc1 = enc2 = enc3 = enc4 = "";

    } while (i < input.length);

    return output;

    }

    function utf16to8(str) {

     var out, i, len, c;

     out = "";

     len = str.length;

     for(i = 0; i < len; i++) {

      c = str.charCodeAt(i);

      if ((c >= 0x0001) && (c <= 0x007F)) {

       out += str.charAt(i);

      } else if (c > 0x07FF) {

       out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));

       out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));

       out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

      } else {

       out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));

       out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));

      }

     }

     return out;

    }

    function utf8to16(str) {

     var out, i, len, c;

     var char2, char3;

     out = "";

     len = str.length;

     i = 0;

     while(i < len) {

      c = str.charCodeAt(i++);

      switch(c >> 4) {

       case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:

        // 0xxxxxxx

        out += str.charAt(i-1);

        break;

       case 12: case 13:

        // 110x xxxx  10xx xxxx

        char2 = str.charCodeAt(i++);

        out += String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));

        break;

       case 14:

        // 1110 xxxx 10xx xxxx 10xx xxxx

        char2 = str.charCodeAt(i++);

        char3 = str.charCodeAt(i++);

        out += String.fromCharCode(((c & 0x0F) << 12) |

        ((char2 & 0x3F) << 6) |

        ((char3 & 0x3F) << 0));

        break;

      }

     }

     return out;

    }

    // 測試代碼 開始

    var de = encode64(utf16to8("select 用戶名 from 用戶"));

    document.writeln(de+"<br>");

    var ee = utf8to16(decode64(de))

    document.writeln(ee);

    // 測試代碼 結(jié)束

    //-->

    </script>

    </head>

    <body>

    </body>

    </html>

    希望本文所述對大家JavaScript程序設(shè)計有所幫助。

    更多信息請查看網(wǎng)絡(luò)編程
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2026上岸·考公考編培訓(xùn)報班

    • 報班類型
    • 姓名
    • 手機(jī)號
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報警專用圖標(biāo)