Mysql varchar 數字計算方法 - 個數計算?2字節?3字節?4字節?編碼格式決定一切啊! 原

http://my.oschina.net/cart/blog/372633

Mysql varchar的數字計算方法

SELECT char_length('中文');
SELECT length('中文');



個數計算?字節計算?

2字節?3字節?4字節?編碼格式決定一切啊!

簡單的事情爲什麼那麼複雜?裝逼寫算法計算數目搞得高大上?其實很簡單,只是你不懂原理!



同樣1個字符,可以演變出1個字節、2個字節、3個字節、4個字節,試問,你不變的算法如何正確針對可變的編碼?

Mysql varchar 1個字符在不同編碼下的字節數目是不同的



Mysql varchar的數字意義是:任何編碼下都是按照個數計算的

Mysql varchar 到底是字節還是個數?

varchar(10),char(10)

  1. 可以肯定的是,最多包含10個字符(東西)
  2. 具體是多少字節,要看字符類型和編碼規則而定!

如何解決varchar字符數目長度判斷或者限制?

根據上面的,我們可以從計算個數的理論上來限制即可!

a-z,A-Z,0-9,半角標點符號 都是1個(這個大家都知道)

漢字、全角字符、法語、Emoji表情符號。。。等一切都視爲1個(聰明的同學已經知道解決方法了)

最終答案:


if(mb_strlen($name, 'UTF-8') > 10){
    exit('超過數據庫最大長度varchar(10)');
}



var_dump(mb_strlen('a', 'UTF-8'));//1個
var_dump(mb_strlen('A', 'UTF-8'));//1個
var_dump(mb_strlen('8', 'UTF-8'));//1個
var_dump(mb_strlen('我', 'UTF-8'));//1個

Emoji表情符號大全,Emoji官網,4字節字符符號表情測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章