私たち全員が知っているように、JSでは、文字列の長さは中国語と英語のキャラクターに分割されず、各文字は長さとしてカウントされます。これは、PHPのstrlen()関数とは異なります。 PHPのStrlen()関数は、キャラクターセットに従ってGBKに2つの漢字を蓄積し、UTF-8に3つの漢字を蓄積します。
一部の子供の靴は尋ねるかもしれませんが、なぜ実際の長さを計算する必要があるのですか?
主にデータベースの長さ範囲と一致するためです。たとえば、GBKデータベースの特定のフィールドはVarchar(10)であり、これは5漢字の長さに相当し、1つの漢字は2文字の長さに等しくなります。 UTF8データベースの場合、各漢字の長さは3です。
上記の原則を知った後、文字列の実際の長さを計算できます。 GBK文字セットの場合は、中国語に2を追加し、UTF8文字セットの場合は中国語に3を追加します。
GBK長さの計算関数:
コードコピーは次のとおりです。
// GBK文字セットの実際の長さを計算します
関数getStrleng(str){
var Reallength = 0;
var len = str.length;
var charcode = -1;
for(var i = 0; i <len; i ++){
charcode = str.charcodeat(i);
if(charcode> = 0 && charcode <= 128){
Reallength += 1;
}それ以外{
//中国人の場合は、2つの長さを追加します
Reallength += 2;
}
}
Return Reallength;
}
UTF8の長さ計算関数:
コードコピーは次のとおりです。
// utf8文字セットの実際の長さを計算します
関数getStrleng(str){
var Reallength = 0;
var len = str.length;
var charcode = -1;
for(var i = 0; i <len; i ++){
charcode = str.charcodeat(i);
if(charcode> = 0 && charcode <= 128){
Reallength += 1;
}それ以外{
//中国人の場合は、3つの長さを追加します
Reallength += 3;
}
}
Return Reallength;
}