Base64 Decode不适用于重音字符

时间:2018-03-16 00:27:42

标签: javascript unicode encoding base64

我正在使用http://www.webtoolkit.info/javascript_base64.html#.Wqn0dB2WbCI中的逻辑来解码在base64中编码的字符串。解码适用于所有字母数字字符,除了像è这样的重音字符。 è的unicode是232。 如果有人可以解释这个问题会很棒。 我使用的代码如下:

function decode(input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

        while (i < input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._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 = output + String.fromCharCode(chr2);
            }

            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }
        }

    return output;
}

0 个答案:

没有答案