javascript字符串的byte字节长度(兼容gbk、utf-8)

2011-06-21 10:46  2354人阅读  评论 (0)

Javascript获取字符串占用的字节长度。

函数版

function Bytelen(str, encode){
    var encodelen = 3;
    if(encode && encode.substr(0, 2).toLowerCase() === 'gb'){
        encodelen = 2;
    }
    var bytelen = 0;
    var chars = str.split('');
    for(i = 0; i < chars.length; i++){
        var urichar = encodeURI(chars[i]);
        bytelen += urichar.length == 1 ? 1 : urichar.length / 9 * encodelen;
    }
    return bytelen;
}
console.log(Bytelen("1中文1"));
console.log(Bytelen("1中文1", 'GBK'));

方法版

String.prototype.byteLength = function(encode){
    var encodelen = 3;
    if(encode && encode.substr(0, 2).toLowerCase() === 'gb'){
        encodelen = 2;
    }
    var bytelen = 0;
    var chars = this.split('');
    for(i = 0; i<chars.length; i++){
        var urichar = encodeURI(chars[i]);
        bytelen += urichar.length == 1 ? 1 : urichar.length / 9 * encodelen;
    }
    return bytelen;
};
console.log("1中文1".byteLength());
console.log("1中文1".byteLength('GBK'));
豫ICP备09035262号-1