تصف هذه المقالة طريقة تنفيذ JS BASE64 ترميز UTF-8 في الأوتار الصينية. شاركه للرجوع إليه ، على النحو التالي:
سلسلة ليتم ترميزها: "حدد اسم المستخدم من المستخدم"
استخدم Java للتشفير ، برنامج Java:
String SQL = "SELECT username from user" ؛ string encodestr = new string (base64.encode (sql.getbytes ("utf-8"))) ؛ // الترميز system.out.println (encodester) ؛يحصل:
c2vszwn0ioeuqoait+wqjsbmcm9tioeuqoaitw ==
فك الشفرة في جافا:
sql = new string (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" 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 padding: 0px ؛} body ، td {font-size: 9pt ؛}-> </style> <script type = "text/javaScript"> <! ANSI-ENCODED STRING function encode64 (input) {var outpute = "" ؛ var chr1 ، chr2 ، chr3 = "" ؛ var enc1 ، enc2 ، enc3 ، enc4 = "" ؛ var i = 0 ؛ do {chr1 = input.charcodeat (i ++) ؛ chr2 = input.charcodeat (i ++) ؛ chr3 = ((Chr1 & 3) << 4) | (chr2 >> 4) ؛ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6) ؛ enc4 = chr3 و 63 ؛ if (isnan (chr2)) {enc3 = enc4 = 64 ؛} آخر إذا (isnan (chr3)) {enc4 = 64 ؛} output = output + keystr.charat "" ؛ enc1 = enc2 = enc3 = enc4 = "" ؛} بينما (i <input.length) ؛ إرجاع الإرجاع ؛} // تحويل السلسلة المشفرة BASE64 إلى ANSI-ENCODED STRING decode64 (input) {var output "" ؛} var base64test =/[^a-za-z0-9/+/// =]/g ؛ if (base64test.exec (input)) {return "" ؛ 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 = "enc1 = enc2 =" الإخراج ؛} وظيفة utf16to8 (str) {var out ، i ، len ، c ؛ Out = "" ؛ len = str.length ؛ لـ (i = 0 ؛ i <len ؛ i ++) {c = str.charcodeat (i) ؛ if ((c> = 0x0001) && (c <= 0x007f)) {out += str.charat (i) ؛ } if if (c> 0x07ff) {out += string.fromcharcode (0xe0 | ((c >> 12) & 0x0f)) ؛ Out += string.fromcharcode (0x80 | ((C >> 6) & 0x3f)) ؛ Out += string.fromcharcode (0x80 | ((C >> 0) & 0x3f)) ؛ } آخر {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 ؛ أنا = 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)) document.writeln (ee) ؛يتم الحصول على جميع الرموز المذكورة أعلاه من الإنترنت والحصول على النتائج الصحيحة بعد تجميعها معًا. شكرا لك على كبار السن.
ملاحظة: فيما يلي بعض أدوات الترميز والتشفير عبر الإنترنت ، وأعتقد أنها ستستخدم في التطوير المستقبلي:
BASE64 أدوات ترميز وفك التشفير:
http://tools.vevb.com/transcoding/base64
أداة تحويل الصور عبر الإنترنت 64:
http://tools.vevb.com/transcoding/img2base64
لمزيد من المعلومات حول المحتوى المتعلق بـ javaScript ، يرجى مراجعة موضوعات هذا الموقع: "ملخص لتأثيرات وتقنيات تبديل JavaScript" ، "ملخص لمهارات خوارزمية بحث JavaScript" ، "ملخص لتأثيرات الرسوم المتحركة JavaScript و Techniques و" ملخص ". خوارزميات وتقنيات JavaScript Traversal "، و" ملخص استخدام العمليات الرياضية JavaScript "
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.