この記事では、中国の弦にUTF-8のbase64エンコードを実装するJSの方法について説明します。次のように、参照のために共有してください。
エンコードする文字列:「ユーザーからユーザー名を選択」
Javaを使用して、エンコーディング、Javaプログラム:
string sql = "ユーザーからユーザー名を選択"; string encodestr = new string(base64.encode(sql.getBytes( "utf-8"))); // system.out.println(encodestr);
得る:
C2VSZWN0IOEUQOAIT+WQJSBM9TIOEUQOAITW ==
Javaでデコード:
sql = new String(base64.decode(sql.getBytes())、 "utf-8");
JavaコードでGetBytes( "UTF-8")を使用するのはなぜですか? WindowsおよびLinux環境でのデフォルトのエンコーディングは異なるため、プログラムが異なるプラットフォームで同じエンコードを取得するには、エンコードを指定する必要があります。
HTMLとJSのエンコードは両方ともUTF-8ですが、ページからJSによって取得された中国のエンコードはUTF-16であるため、Base64で直接エンコードされた中国人は間違った結果を得るため、最初にUTF-8に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 = "text/html; charset = utf-8"/> <スタイル= "テキスト/css"> <!パディング:0px;} body、td {font-size:9pt;} - > </style> <script type = "text/javascript"> <! - var keystr = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789 Ansi-Encoded String関数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 = input.Chrcodeat(i+> =((chr1&3)<< 4)| (chr2 >> 4); enc3 =((chr2&15)<< 2)| (Chr3 >> 6); enc4 = chr3&63; if(isnan(chr2)){enc3 = enc4 = 64;} else if(isnan(chr3)){enc4 = 64;} output + keystr.charat(enc1) + keystr.charat(enc2) + keystr.charat(enc3) + chr2 = chr2. chr2. Chr3 = ""; enc1 = enc2 = enc3 = enc4 = "";} while(i <input.length); return output;} // base64エンコード文字列をansiエンコード文字列decode64(input){input){input){input){input){input = ""; var chr1、chr2、chr3 = "; != 0){return "";} var base64test =/[^a-za-z0-9/+/// =]/g; if(base64test.exec(input)){return "";} do {enc1 = keystr.indexof(input.charat(i ++)); enc2 = keystr.indexof(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 = " input.length); return output;}関数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)&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;}関数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){ケース0:ケース1:ケース2:ケース3:ケース4:ケース5:ケース6:// 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( "select username from user"); document.writeln(de+"<br>"); var ee = utf8to16(decode64(de))document.writeln(ee);上記のコードはすべてインターネットから取得され、一緒につなぎ合わせた後に正しい結果を得ます。先輩をありがとう。
PS:オンラインツールのエンコードとデコードのいくつかのBase64があります。将来の開発で使用されると思います。
Base64エンコードおよびデコードツール:
http://tools.vevb.com/transcoding/base64
オンライン画像変換Base64ツール:
http://tools.vevb.com/transcoding/img2base64
JavaScript関連のコンテンツの詳細については、このサイトのトピックをご覧ください:「JavaScriptの切り替え効果とテクニックの要約」、「JavaScript検索アルゴリズムスキルの要約」、「JavaScriptアニメーション効果とテクニックの概要」、「Javascriptエラー、および「Javascriptデータ構造」の概要」の概要の要約の要約をご覧ください。 JavaScriptトラバーサルアルゴリズムとテクニック」、および「JavaScriptの数学的操作の使用法の要約」
この記事がみんなのJavaScriptプログラミングに役立つことを願っています。