表单字符长度与数据库字段长度

html的表单length长度是以字符个数计算的,不管是汉字还是字母,但是数据库又是按字节计算的,汉字占2个字母占1个,这样容易造成写入的时候长度超出的问题。
两个问题:
1.有没有好的方法,能够在前端或者php或者mysql之间使用统一的方法计算长度?
2.还是只能把数据库长度设的足够大,让表单永远不会超出?
.
慕容3067478
浏览 351回答 2
2回答

慕码人2483693

mysql在4.1之后,char和varchar定义的就是字符长度了。具体可以去看下文档TheCHARandVARCHARTypes。而4.1的文档中有直接提到。TheCHARandVARCHARtypesaredeclaredwithalengththatindicatesthemaximumnumberofcharactersyouwanttostore.Forexample,CHAR(30)canholdupto30characters.(BeforeMySQL4.1,thelengthisinterpretedasnumberofbytes.)

白板的微信

统一计算长度,是基于“长度”这个概念是一样的标准的,首先你要规定你的“长度”指的是什么。如果“长度”指的字节长度,那么可以这样(假设页面编码是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;这样长度都是一致的,所以要在最开始就定义好你的“长度”指的是什么很重要
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript