js、php与mysql字符串长度不统一的问题-前端-IT技术博客

js、php与mysql字符串长度不统一的问题

时间:2019-12-30 23:39:46 浏览: 字体: 放大 缩小


进行本博客开发中,由于文章中的描述字符串长度的问题,造成老是保存不成功,超过数据库中的长度。所以加强字符串的判断,提高用户体验性,保证保存成功率。

javascript字符串的长度,是按字符的个数来算的,无论汉字或字母都算一个。

php是根据编码来算的,如utf-8编码,一个字母算1个,一个汉字算3个;如果是gbk,即一个汉字算两个;php判断字符串长度数函数strlen;

mysql数据库,和php一样,一个字母占用一个字节,只要是汉字的区别,gbk编码的情况下,一个汉字占用两个字节;如果是utf-8的话,一个汉字占用三个字节;

<div class="input-group">
<div class="input-group-addon">描述</div>
<textarea name="description" id="description" cols="32" rows="10"></textarea>
</div>
<span id="deslen" style="color:red;">0</span>个字符(最多265个字符)

//字符串长度,mysql的utf-8编码中,一个汉字占三个字节
function strlen(str){
	var realLength = 0, len = str.length, charCode = -1;
	for(var i = 0; i < len; i++){
		charCode = str.charCodeAt(i);
		if(charCode >= 0 && charCode <= 128){
			realLength += 1;
		}else{
			realLength += 3;
		}
	}
	return realLength;
}
	
//这里用到了jquery,判断鼠标离开或键盘键松开时,统计字数	
$("#description").blur(function(){
	$("#deslen").html(strlen($(this).val()));
}).keyup(function(){
	$("#deslen").html(strlen($(this).val()));
});

在php中,如果超过长度我们就进行截取,

$description = substr($_POST['description'],0,265);

经过简单的改造,用户友好性大大提高,保存数据成功率提高不少了

标签: mysqlphpjs字符串长度