項目中oracle10g數據庫表字段為varchar(n)類型,存英文很簡單,只要字母個數不大於n即可。但是對於漢字,按照同樣的方法就不行了。因為對於漢字不同的字符集,在數據庫占用的字節是不一樣的。UTF-8字符集,一個漢字占三個字節,gbk字符集,一個漢字占兩個字節,比如varchar(10)類型的字段,UTF-8的漢字,只能存3個,gbk字符集的漢字卻能存5個。
所以在程序中根據表字段varchar的大小,保存或更新時作出必要的校驗否則后台會報錯。
辦法:1、用表格 maxlength屬性,比如maxlength="5",即只能存5個漢字。
MySQL 5.0以上的版本:
1.一個漢字占多少長度與編碼有關:
UTF-8:一個漢字=3個字節
GBK:一個漢字=2個字節
2.varchar(n)表示n個字符,無論漢字和英文,Mysql都能存入n個字符,僅是實際字節長度有所區別
3.MySQL檢查長度,可用SQL語言:
select LENGTH(fieldname) from tablename 來查看