html的表单length长度是以字符个数计算的,不管是汉字还是字母,但是数据库又是按字节计算的,汉字占2个字母占1个,这样容易造成写入的时候长度超出的问题。两个问题:1.有没有好的方法,能够在前端或者php或者mysql之间使用统一的方法计算长度?2.还是只能把数据库长度设的足够大,让表单永远不会超出?.
2 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
mysql在4.1之后,char和varchar定义的就是字符长度了。具体可以去看下文档TheCHARandVARCHARTypes。而4.1的文档中有直接提到。TheCHARandVARCHARtypesaredeclaredwithalengththatindicatesthemaximumnumberofcharactersyouwanttostore.Forexample,CHAR(30)canholdupto30characters.(BeforeMySQL4.1,thelengthisinterpretedasnumberofbytes.)
白板的微信
TA贡献1883条经验 获得超3个赞
统一计算长度,是基于“长度”这个概念是一样的标准的,首先你要规定你的“长度”指的是什么。如果“长度”指的字节长度,那么可以这样(假设页面编码是utf8)://javascriptfunctionlengthInUtf8Bytes(str){//Matchesonlythe10..bytesthatarenon-initialcharactersinamulti-bytesequence.varm=encodeURIComponent(str).match(/%[89ABab]/g);returnstr.length+(m?m.length:0);}len=lengthInUtf8Bytes(str);//php$len=strlen($str);//mysqlCREATEDATABASE`byte_test`CHARACTERSETlatin1COLLATElatin1_general_ci;javascript函数lengthInUtf8Bytes来自于StringlengthinbytesinJavaScript如果“长度”指的编码长度,还是假设页面utf8编码://javascriptlen=str.length;//php$len=mb_strlen($str,"UTF-8");//mysqlCREATEDATABASE`utf8_test`CHARACTERSETutf8COLLATEutf8_general_ci;这样长度都是一致的,所以要在最开始就定义好你的“长度”指的是什么很重要
添加回答
举报
0/150
提交
取消