Artikel ini menjelaskan metode pengkodean basis 64 JS dari UTF-8 dalam string Cina. Bagikan untuk referensi Anda, sebagai berikut:
String yang akan dikodekan: "Pilih Nama Pengguna dari Pengguna"
Gunakan java untuk pengkodean, program java:
String sql = "Pilih nama pengguna dari pengguna"; String encodeStr = string baru (base64.encode (sql.getbytes ("UTF-8"))); // encoding system.out.println (encodeStr);mendapatkan:
c2vszwn0ioeuqoait+wqjsbmcm9tioeuqoaitw ==
Decode di Java:
sql = string baru (base64.decode (sql.getbytes ()), "UTF-8");
Mengapa menggunakan GetBytes ("UTF-8") dalam kode Java? Karena penyandian default di lingkungan Windows dan Linux berbeda, untuk membuat program Anda mendapatkan pengkodean yang sama pada platform yang berbeda, Anda harus menentukan pengkodean.
Meskipun pengkodean HTML dan JS keduanya adalah UTF-8, pengkodean Cina yang diperoleh JS dari halaman adalah UTF-16, sehingga China yang dikodekan langsung dengan Base64 akan mendapatkan hasil yang salah, jadi kita perlu transfer terlebih dahulu dari UTF-16 ke UTF-8 dan kemudian mengkodekannya.
<! Doctype html public "-// w3c // dtd xhtml 1.0 transisi // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns = "http://www.w3.org/1999/xhtml"> <adept> <itement> </title> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/<style type = "texs/css"> <! padding: 0px;} body, td {font-size: 9pt;}-> </style> <script type = "text/javascript"> <!-var keystr = "abcdefghijklmnopqrstuvwxyz3234444444444444423873873237323 fungsi string ansi-encoded 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 ++); i encuk. 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isnan (chr2)) {enc3 = enc4 = 64;} lain if (isnan (chr3)) {enc4 = 64;} output = output + keystr.charat (enc1) + keystr.CHARAT (enc2); chrChar2 = encyStr.CHARAT (ENC1) + KEYSTR.CHARAT (enc2) chrCrCHAR.CHARAT (ENCTR3) + KEYSTR.CHARAT (enc2) + chrCHARAT (encyStr.CHARAT (ENCR3) + KEYSTR.CHARAT (enc2) + encystr. } ";} while (i <input.length); output return;} // Konversi base64 string yang dikodekan menjadi fungsi string ansi-encoded decode64 (input) {var output =" "; var chr1, chr2, chr3 =" "; input) {var output =" "; var chr1, chr2, chr3 =" "; input) {var output =" "; var chr1, chr3, chr3 =" "; input) {var output =" "; var chr1, chr3, chr3 =" "; input) {var output =" "; % 4! = 0) {return "";} var base64test =/[^a-za-z0-9/+/// =]/g; if (base64test.exec (input)) {return "";} do {enc1 = keystr.IndexOf (input.charat (i+++); 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 = chr3 = chr3 = "; input.length); return output;} fungsi utf16to8 (str) {var out, i, len, c; out = ""; len = str.length; untuk (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: // 0xxxxxx out += str.charat (i-1); merusak; Kasus 12: Kasus 13: // 110x xxxx 10xx xxxx char2 = str.charcodeat (i ++); out += string.fromCharCode (((c & 0x1f) << 6) | (char2 & 0x3f)); merusak; Kasus 14: // 1110 xxxx 10xx xxxx char2 = str.charcodeat (i ++); char3 = str.charcodeat (i ++); out += string.fromCharCode (((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 & 0x3f) << 0)); merusak; } } return out;}// Test code start var de = encode64(utf16to8("select username from user"));document.writeln(de+"<br>");var ee = utf8to16(decode64(de))document.writeln(ee);// Test code end //--></script></head><body></body></html>Semua kode di atas diperoleh dari internet dan mendapatkan hasil yang benar setelah disatukan. Terima kasih atas senior Anda.
PS: Berikut adalah beberapa alat pengkodean dan decoding basis 64 lagi, saya percaya bahwa mereka akan digunakan dalam pengembangan di masa depan:
Alat Pengkodean dan Pengodean Basis64:
http://tools.vevb.com/transcoding/base64
Alat konversi gambar online64 Alat:
http://tools.vevb.com/transcoding/img2base64
Untuk informasi lebih lanjut tentang konten terkait JavaScript, silakan periksa topik -topik situs ini: "Ringkasan Efek dan Teknik Peralihan Javascript", "Ringkasan Keterampilan Algoritma Pencarian JavaScript", "Ringkasan Teknik Animasi dan Teknik JavaScript," Ringkasan Ringkasan Data Javascript dan Ringkasan Data Javascript "," Ringkasan Data JavaScript "," Ringkasan Data JavaScript "," Ringkasan DEBUGRITM PENGABUNG DAN RINGKASI DAGGING "RINGKASI DAN RINGKASAN DATRICKS" RINGKASI DAN RINGKASI DAGGING "RINGKASI DAN RINGKASI DAGGING" RINGKAS Algoritma dan teknik traversal javascript ", dan" Ringkasan Penggunaan Operasi Matematika JavaScript "
Saya harap artikel ini akan membantu pemrograman JavaScript semua orang.