JSは文字列のバイト長を取得します.
784 ワード
javascriptでは、1文字と数字は1バイトを占め、中国語は2バイトを占めています.テストしてもいいです.
私が思い付いたのは二つの方法があります.
1、中国語を2つの英語の文字で置換します.例えば「*」で置換して、str.lenghtを計算します.
2、中国語以外の文字、例えばアルファベット、数字、記号などは全部asciiコードに属しています.
だから、charCodeは0-255の間にあるべきです.255より大きいなら、str.length++でいいです.
コードの実装は以下の通りです.
console.log('abcd1234'.length);//8
console.log(' '.length);//4
したがって、文字列のバイト長を計算するには、中国語かどうかの区別が必要です.私が思い付いたのは二つの方法があります.
1、中国語を2つの英語の文字で置換します.例えば「*」で置換して、str.lenghtを計算します.
2、中国語以外の文字、例えばアルファベット、数字、記号などは全部asciiコードに属しています.
だから、charCodeは0-255の間にあるべきです.255より大きいなら、str.length++でいいです.
コードの実装は以下の通りです.
//
function getBytes(str){
str = str.replace(/[^\x00-\xff]/g, '**');// ascii 2 ascii
return str.length;
}
方法二:function getBytes(str){
var bytes= str.length;
for(var i = bytes; i--;){
if(str.charCodeAt(i) > 255){
bytes++;
}
}
return bytes;
}