บทความนี้อธิบายถึงวิธีการของ JS การใช้การเข้ารหัส BASE64 ของ UTF-8 ในสตริงจีน แบ่งปันสำหรับการอ้างอิงของคุณดังนี้:
สตริงที่จะเข้ารหัส: "เลือกชื่อผู้ใช้จากผู้ใช้"
ใช้ Java สำหรับการเข้ารหัสโปรแกรม Java:
String sql = "เลือกชื่อผู้ใช้จากผู้ใช้"; string encodestr = สตริงใหม่ (base64.encode (sql.getBytes ("UTF-8")))); // การเข้ารหัส System.out.println (encodestr);รับ:
C2VSZWN0IOEUQOAIT+WQJSBMCM9TIOEUQOAITW ==
ถอดรหัสใน Java:
sql = สตริงใหม่ (base64.decode (sql.getBytes ()), "UTF-8");
ทำไมต้องใช้ GetBytes ("UTF-8") ในรหัส Java? เนื่องจากการเข้ารหัสเริ่มต้นในสภาพแวดล้อม Windows และ Linux นั้นแตกต่างกันเพื่อให้โปรแกรมของคุณได้รับการเข้ารหัสแบบเดียวกันบนแพลตฟอร์มที่แตกต่างกันคุณต้องระบุการเข้ารหัส
แม้ว่าการเข้ารหัสของ HTML และ JS นั้นเป็นทั้ง UTF-8 แต่การเข้ารหัสจีนที่ได้รับจาก JS จากหน้านั้นคือ UTF-16 ดังนั้นการเข้ารหัสจีนโดยตรงกับ Base64 จะได้รับผลลัพธ์ที่ไม่ถูกต้องดังนั้นเราจึงต้องถ่ายโอนจาก UTF-16 ไปยัง 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 = "ข้อความ/html; charset = utf-8"/> Padding: 0px;} body, td {font-size: 9pt;}-> </style> <script type = "text/javascript"> <!-var keystr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyfghi ของฟังก์ชั่นสตริงที่เข้ารหัส ansi-encoded เข้ารหัส 64 (อินพุต) {var output = ""; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do {chr1 = input.charcodeat (i ++); chr2 = input.charcodeat = ((Chr1 & 3) << 4) | (Chr2 >> 4); enc3 = ((Chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; ถ้า (isnan (chr2)) {enc3 = enc4 = 64;} อื่นถ้า (isnan (chr3)) {enc4 = 64;} output = เอาต์พุต + keystr.charat chr3 = ""; enc1 = enc2 = enc3 = enc4 = "";} ในขณะที่ (i <input.length); return output;} // แปลง base64 สตริงที่เข้ารหัสเป็น ansi-encoded function decode64 (อินพุต) {var-output = " ! = 0) {return "";} var base64test =/[^a-za-z0-9/+/// =]/g; ถ้า (base64test.exec (อินพุต)) {return "";} ทำ {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);} ถ้า (Enc4! = 64) {output += string.fromCharcode (chr3); input.length); return output;} function UTF16to8 (str) {var out, i, len, c; ออก = ""; len = str.length; สำหรับ (i = 0; i <len; i ++) {c = str.charcodeat (i); if ((c> = 0x0001) && (c <= 0x007f)) {out += str.charat (i); } อื่นถ้า (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; ออก = ""; len = str.length; i = 0; ในขณะที่ (i <len) {c = str.charcodeat (i ++); สวิตช์ (c >> 4) {กรณี 0: กรณีที่ 1: กรณีที่ 2: กรณีที่ 3: กรณีที่ 4: กรณีที่ 5: กรณีที่ 6: กรณี 7: // 0xxxxxx out += str.charat (I-1); หยุดพัก; กรณีที่ 12: กรณี 13: // 110X XXXX 10XX XXXX CHAR2 = Str.Charcodeat (i ++); out += string.fromCharcode ((c & 0x1f) << 6) | (char2 & 0x3f)); หยุดพัก; กรณีที่ 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)); หยุดพัก; }} return out;} // รหัสทดสอบเริ่มต้น var de = encode64 (utf16to8 ("เลือกชื่อผู้ใช้จากผู้ใช้")); document.writeln (de+"<br>"); var ee = utf8to16 (decode64 (de)) เอกสารรหัสข้างต้นทั้งหมดได้รับจากอินเทอร์เน็ตและรับผลลัพธ์ที่ถูกต้องหลังจากถูกรวมเข้าด้วยกัน ขอบคุณสำหรับผู้อาวุโสของคุณ
PS: นี่คือการเข้ารหัสและถอดรหัสเครื่องมือออนไลน์ Base64 อีกสองสามรายการฉันเชื่อว่าพวกเขาจะใช้ในการพัฒนาในอนาคต:
BASE64 เครื่องมือการเข้ารหัสและถอดรหัส:
http://tools.vevb.com/transcoding/base64
เครื่องมือการแปลงรูปภาพออนไลน์ Base64:
http://tools.vevb.com/transcoding/img2base64
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องกับ JavaScript โปรดตรวจสอบหัวข้อของไซต์นี้: "สรุปเอฟเฟกต์และเทคนิคการสลับ JavaScript", "สรุปทักษะอัลกอริธึมการค้นหา JavaScript", "สรุปผลการสรุปและเทคนิคการสรุปของ JavaScript ของ JavaScript อัลกอริทึมและเทคนิคการสำรวจ JavaScript "และ" สรุปการใช้งานทางคณิตศาสตร์ JavaScript "
ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับการเขียนโปรแกรม JavaScript ของทุกคน