MySQL 5.1中varchar類型中文和英文長度的問題 |
發(fā)布時間: 2012/8/24 17:03:21 |
今天,也是突發(fā)奇想,在MySQL上驗證varchar(15)會存15個中文,超過的會自動截取前15個。 一直抱守舊的觀念(這種觀念可能來源與sql server),varchar類型中,中文占兩個字節(jié),因此只能存varchar長度的一半的中文字數。但實際上,在MySQL中不管是中文還是英文,都是長度值,只是數據庫”的文章">數據庫選擇不同字符編碼時,varchar最大長度不一樣,但同一編碼下英文和中文的長度是一樣。 MySQL5的文檔,其中對varchar字段類型這樣描述:varchar(m) 變長字符串。M 表示最大列長度。M的范圍是0到65,535。(VARCHAR的最大實際長度由最長的行的大小和使用的字符集確定,最大有效長度是65,532字節(jié))。 MySQL 5.1遵從標準SQL規(guī)范,并且不刪除VARCHAR值的尾部空格。VARCHAR保存時用一個字節(jié)或兩個字節(jié)長的前綴+數據。如果VARCHAR列聲明的長度大于255,長度前綴是兩個字節(jié)。 好了,貌似懂了一點。但具體他說的長度大于255時使用2個字節(jié)長度前綴,小學減法題:65535 - 2 = 65533啊。不知道這些大牛如何計算的,暫且保留疑問吧? 注:我測試了一下使用UTF8編碼,varchar的最大長度為21854字節(jié)。 本文出自:億恩科技【www.riomediacenter.com】 |