JavaScript 实现的 GBK、UTF8 字符串实际长度计算函数
大家都知道,在 JS 中字符串的长度不分中英文字符, 每一个字符都算一个长度,这跟 PHP 里的 strlen() 函数就不太一样。PHP 里的 strlen() 函数根据字符集把 GBK 的中文每个 2 累加,把 UTF-8 的中文字符每个按 3 累加。
有些童鞋可能要问了,为什么要计算实际长度?
主要是为了匹配数据库的长度范围内,比如 GBK 的数据库某字段是 varchar(10),那么就相当于 5 个汉字长度,一个汉字等于两个字母长度。如果是 UTF8 的数据库则是每个汉字长度为 3。
知道了以上原理以后,我们就可以算出一个字符串的实际长度了,如果是 GBK 字符集遇到中文加 2,如果是 UTF8 字符集遇到中文加 3 即可
GBK 长度计算函数:
复制代码 代码如下:
// GBK 字符集实际长度计算
function 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;
}else{
// 如果是中文则长度加 2
realLength += 2;
}
}
return realLength;
}
UTF8 长度计算函数:
复制代码 代码如下:
// UTF8 字符集实际长度计算
function 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;
}else{
// 如果是中文则长度加 3
realLength += 3;
}
}
return realLength;
}
来源: http://www.phpstudy.net/b.php/113008.html