Este artigo descreve o método de JS implementando a codificação Base64 do UTF-8 em cordas chinesas. Compartilhe -o para sua referência, como segue:
String a ser codificada: "Selecione o nome de usuário do usuário"
Use Java para codificar o programa Java:
String sql = "Selecione o nome de usuário do usuário"; string codest = new String (base64.Encode (sql.getbytes ("utf-8"))); // codificação System.out.println (codest);pegar:
C2VSZWN0IOEUQOAIT+WQJSBMCM9TIOEUQOaitw ==
Decodificar em java:
sql = new string (base64.Decode (sql.getbytes ()), "utf-8");
Por que usar getBytes ("UTF-8") no código Java? Como as codificações padrão nos ambientes Windows e Linux são diferentes, para fazer com que seu programa obtenha a mesma codificação em plataformas diferentes, você deve especificar a codificação.
Embora a codificação de HTML e JS seja UTF-8, a codificação chinesa obtida por JS da página é UTF-16, portanto, os chineses codificados diretamente com base64 obtiverão o resultado errado, por isso precisamos primeiro transferir do UTF-16 para o UTF-8 e depois a codificar.
<! xmlns = "http://www.w3.org/1999/xhtml"> <head> <title> </title> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <estilo type = " padding:0px;}body,td{ font-size:9pt;}--></style><script type="text/JavaScript"><!--var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";//Base64 encoding of Função de string codificada por ANSI 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; 2; Enc2 = ((Chr1 e 3) << 4) | (Chr2 >> 4); Enc3 = ((Chr2 e 15) << 2) | (Chr3 >> 6); Enc4 = Chr3 e 63; if (isnan (Chr2)) {Enc3 = Enc4 = 64;} else if (isnan (Chr3)) {Enc4 = 64;} output = keystr.charat (Enc1) + keyst.Charat (Enc2) + KeyStr.At.Charat (ENCH3) ""; Enc1 = Enc2 = Enc3 = Enc4 = "";} while (i <input.length); Retornar saída;} // Converte Base64 String codificada em função da String codificada por ANSI-ANSCODE64 (input) {var output = ""; var Chr1, Chr2, ""; var (var); 0) {return "";} var BASE64TEST =/[^a-ZA-Z0-9/+/// =]/g; if (base64test.exec (input)) {return "";} do {Enc1 = keystr.indexof (input.Charat (i ++); consalé; keystr.indexOF (input.Charat (i ++)); Enc4 = keystr.IndexOF (input.Charat (i ++)); Chr1 = (ENC1 << 2) | (ENC2 >> 4); Chr2 = ((Enc2 e 15) << 4) | (Enc3 >> 2); Chr3 = ((Enc3 e 3) << 6) | Enc4; output = output +String.FromCharCode (Chr1); if (Enc3! = 64) {output += String.FromCharCode (Chr2);} if (Enc4! = 64) {output += string.FromCharCode (Chr3);} Chr1 = Chr2 = Chr2 = "; output;} função 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) e 0x0f)); out += string.FromCharCode (0x80 | ((c >> 6) e 0x3f)); out += string.FromCharCode (0x80 | ((c >> 0) e 0x3f)); } else {out += string.fromCharcode (0xc0 | ((c >> 6) e 0x1f)); out += string.FromCharCode (0x80 | ((c >> 0) e 0x3f)); }} retornar;} função 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); quebrar; Caso 12: Caso 13: // 110x xxxx 10xx xxxx char2 = str.charcodeat (i ++); out += string.fromCharcode (((c & 0x1f) << 6) | (char2 & 0x3f)); quebrar; Caso 14: // 1110 xxxx 10xx xxxx char2 = str.charcodeat (i ++); char3 = str.charcodeat (i ++); out += string.fromCharcode (((c & 0x0f) << 12) | ((char2 & 0x3f) << 6) | ((char3 e 0x3f) << 0)); quebrar; }} retornar;} // Código de teste Iniciar var de = Encode64 (utf16to8 ("Selecione o nome de usuário do usuário"));Os códigos acima são todos obtidos da Internet e obtêm os resultados corretos após serem reunidos. Obrigado por seus idosos.
PS: Aqui estão mais algumas ferramentas on -line de codificação e decodificação Base64, acredito que elas serão usadas no desenvolvimento futuro:
Base64 Ferramentas de codificação e decodificação:
http://tools.vevb.com/transcoding/base64
Ferramenta de conversão de imagem online64: ferramenta:
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 e Técnicas de Traversal "e" Resumo do Uso do Javascript Mathematic Operations "
Espero que este artigo seja útil para a programação JavaScript de todos.