4 回答
TA貢獻2039條經驗 獲得超8個贊
您好,沒記錯的話,mysql以4.1版本為界限,之前的varchar以字節計算大小,之后的varchar以字符計算大?。ㄒ粋€漢字也計算為1)。
類似的,在Java中,字符串的長度也是字符相關的,如:
// 輸出字符個數為4
System.out.println("你好hi".length());
因此如果你要將字符串結為1300長度,只需要如下代碼:
String origin = "這是原始的字符串,bala bala bala";
// 如果長度大于1300,就截取, 否則使用全部字符
String newStr = origin.substring(0, origin.length() > 1300 ? 1300 : origin.length());
System.out.println(newStr);
TA貢獻1812條經驗 獲得超5個贊
1300表示字符。
Java: "1300len...".length()大于1300時會出現Data too long...
可以將數據庫字段改短一時,寫點數據試一下就明了了。
TA貢獻1866條經驗 獲得超5個贊
這個要看你用的什么數據庫,我看你標簽是mysql,所以此處以mysql為例。
在4.0以前
varchar(n)中的n表示字節數,即需要自行計算。這和你使用的編碼方式有關:unicode編碼中不論中英文,統一兩個字節。即能存放n/2個字符。utf-8編碼中英文為1個字節,中文占用3個字節。即能存放x+3y=n,x+y個字符。
在4.0以后
由于這種方式雖然方便了底層運算,但在使用起來非常不方便,所以4.0以后的n代表字符個數。
即varchar(1300)能存放1300個漢字或字母或數字。由mysql底層換算成字節。
但是,換算后的字節依然不能超過最大個數0xffff個,否則會自動轉換成text型。
添加回答
舉報
