在網頁中,我使用JavaScript字符串爲Base64轉換:爲什麼使用Powershell/.NET和Javascript爲同一個字符串獲取不同的base64編碼?
<script type="text/javascript">
function base64_encode (data) {
var b64 = ""ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/="";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,
ac = 0,
enc = """",
tmp_arr = [];
if (!data) { return data; }
do {
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1 << 16 | o2 << 8 | o3;
h1 = bits >> 18 & 0x3f;
h2 = bits >> 12 & 0x3f;
h3 = bits >> 6 & 0x3f;
h4 = bits & 0x3f;
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
var r = data.length % 3;
return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);
}
</script>
也就是說從這裏代碼:http://phpjs.org/functions/base64_encode/
當我使用該代碼上面的代碼爲Base64編碼字符串cat
,它迴應Y2F0
。
當我在PowerShell中/ .NET編碼相同的字,我得到這個:
PS C:\> [System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes("cat"))
YwBhAHQA
爲什麼他們是不同的,我怎麼可以使JavaScript函數.NET輸出相匹配?
使用UTF8.GetBytes的竅門。 – 2013-04-09 17:20:01