字節和字符的關系


  有段時間沒有寫業務代碼了,今天產品有個需求是要求校驗名稱為6個漢字或者12個字符。印象中一個漢字就是一個字符,經過了解后,原來前端js中一個漢字是兩個字符,所以這里索性給前端單純去校驗了,我只在數據庫存儲設置稍大點20個字符即可。

  先借用網上的資料整理下字符字節的關系如下:

① ASCII碼中,一個英文字母(不分大小寫)占一個字節的空間,一個中文漢字占兩個字節的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0,最大值255。

② UTF-8編碼中,一個英文字符等於一個字節,一個中文(含繁體)等於三個字節。

③ Unicode編碼中,一個英文等於兩個字節,一個中文(含繁體)等於兩個字節。

  符號:英文標點占一個字節,中文標點占兩個字節。舉例:英文句號“.”占1個字節的大小,中文句號“。”占2個字節的大小。

④ UTF-16編碼中,一個英文字母字符或一個漢字字符存儲都需要2個字節(Unicode擴展區的一些漢字存儲需要4個字節)。

⑤ UTF-32編碼中,世界上任何字符的存儲都需要4個字節。

 

char_length計算的是字符長度,而length計算的是字節長度,剛好我使用的是utf8,一個漢字占3個字節,占一個字符。

 


 

為什么這是相同的?因為這不是漢字,一個字母一個字符一個字節。

注意:

oracle 中varchar2(10)  既10個字節3個漢字

mysql  中varchar(10) 既10個字符10個漢字

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM