Este artículo describe el método de implementación de JS Base64 codificación de UTF-8 en cadenas chinas. Compártelo para su referencia, como sigue:
Cadena para codificar: "Seleccione el nombre de usuario del usuario"
Use Java para la codificación, programa Java:
String sql = "Seleccione el nombre de usuario del usuario"; String codestr = new String (base64.encode (sql.getBytes ("utf-8"))); // Codificación de System.out.println (Encodestr);conseguir:
c2vszwn0ioeuqoait+wqjsbmcm9tioeuqoaitw ==
Decodificar en Java:
sql = new String (base64.Decode (sql.getBytes ()), "UTF-8");
¿Por qué usar GetBytes ("UTF-8") en el código Java? Debido a que las codificaciones predeterminadas en los entornos de Windows y Linux son diferentes, para que su programa obtenga la misma codificación en diferentes plataformas, debe especificar la codificación.
Aunque la codificación de HTML y JS son UTF-8, la codificación china obtenida por JS de la página es UTF-16, por lo que el chino codificado directamente con Base64 obtendrá el resultado incorrecto, por lo que primero debemos transferir de UTF-16 a UTF-8 y luego codificarlo.
< xmlns = "http://www.w3.org/1999/xhtml"> <cead> <title> </title> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <style type = "text/css"> <!-cuerpo {margen: 0px; Padding: 0px;} cuerpo, td {font-size: 9pt;}-> </style> <script type = "text/javaScript"> <!-var keyStr = "abcdefghijklmnopqrstuvwwxyzabcdefghijklmnopqrstuvwxyz0123456789+/="; Función de cadena de cadena codificada ANSI Encode64 (input) {var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do {chr1 = input.charcodeat (i ++); chr1 = chcharcodeat (i ++); chr3 = input.charcodeat (i ++); ((Chr1 y 3) << 4) | (chr2 >> 4); enc3 = ((chr2 y 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 (encen (enc3) + keystr.c4); ""; enc1 = enc2 = enc3 = enc4 = "";} while (i <input.length); return output;} // Convertir la cadena codificada base 64 en la función de cadena codificada ANSI Decode64 (input) {var output = ""; var chr1, chr2, chr3 = ";"; {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 ++)); keyStr.indexof (input.charat (i ++)); enc4 = keyStr.indexof (input.charat (i ++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 y 15) << 4) | (enc3 >> 2); chr3 = ((enc3 y 3) << 6) | enc4; output = output +String.FromCharCode (chr1); if (enc3! = 64) {output += string.FromCharCode (chr2);} if (enc4! = 64) {output += string.fromCode (chr3);} chr1 = chr2 = chr3 = ""; "; enc1 = enc2 = enc4 = enc4 =";} while (i <inport.l longitud; salida;} function utf16to8 (str) {var out, i, len, c; out = ""; len = str.length; para (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) y 0x0f)); out += string.FromCharCode (0x80 | ((c >> 6) y 0x3f)); out += string.FromCharCode (0x80 | ((c >> 0) y 0x3f)); } else {out += string.FromCharCode (0xc0 | ((c >> 6) y 0x1f)); out += string.FromCharCode (0x80 | ((c >> 0) y 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) {Caso 0: Caso 1: Caso 2: Caso 3: Caso 4: Caso 5: Caso 6: Caso 7: // 0xxxxxx out += str.charat (i-1); romper; Caso 12: caso 13: // 110x xxxx 10xx xxxx char2 = str.charcodeat (i ++); out += string.FromCharCode ((((c & 0x1f) << 6) | (char2 y 0x3f)); romper; caso 14: // 1110 xxxx 10xx xxxx char2 = str.charcodeat (i ++); char3 = str.charcodeat (i ++); out += string.FromCharCode ((((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 y 0x3f) << 0)); romper; } } 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>Los códigos anteriores se obtienen de Internet y obtienen los resultados correctos después de ser reconstruidos. Gracias por sus mayores.
PD: Aquí hay algunas herramientas en línea de codificación y decodificación más base64, creo que se utilizarán en el desarrollo futuro:
Base64 Herramientas de codificación y decodificación:
http://tools.vevb.com/transcoding/base64
Herramienta de conversión de imágenes en línea 64:
http://tools.vevb.com/transcoding/img2base64
For more information about JavaScript related content, please check out the topics of this site: "Summary of JavaScript switching effects and techniques", "Summary of JavaScript search algorithm skills", "Summary of JavaScript animation effects and techniques", "Summary of JavaScript errors and debugging techniques", "Summary of JavaScript data structures and algorithm skills", "Summary of JavaScript Algoritmos y técnicas de recorrido ", y" Resumen del uso de operaciones matemáticas de JavaScript "
Espero que este artículo sea útil para la programación de JavaScript de todos.