我想我們大家都知道,好多數據庫中存儲中文漢字與英文的字節數是不同的。如果某個字段長度有固定大小,我們就需要對插入數據的大小進行校驗。之前做安邦電銷項目時就曾經遇到該類問題,現在將其前臺與后臺的校驗核心方法羅列出來,希望能對大家有所幫助。
JS方法:
<script language=javascript>
String.prototype.lenB = function(){return this.replace(/[^\x00-\xff]/g, "**").length;}
var str = "這是一個可以將漢字計算成兩個字節的函數 ";
alert( "老的算法 = " + str.length);
alert( "新的算法 = " + str.lenB());
</script>
說明:上面JS里方法里的"**"表示把一個中文替換成英文的位數。"**"代表一個中文=兩個英文
java方法:
1 /**
2 * 獲取字符串的長度,如果有中文,則每個中文字符計為2位
3 *
4 * @param value
5 * 指定的字符串
6 * @return 字符串的長度
7 */
8 public int chineseLength(String value) {
9 int valueLength = 0;
10 String chinese = "[\u0391-\uFFE5]";
11 /* 獲取字段值的長度,如果含中文字符,則每個中文字符長度為2,否則為1 */
12 for (int i = 0; i < value.length(); i++) {
13 /* 獲取一個字符 */
14 String temp = value.substring(i, i + 1);
15 /* 判斷是否為中文字符 */
16 if (temp.matches(chinese)) {
17 /* 中文字符長度為2 */
18 valueLength += 2;
19 } else {
20 /* 其他字符長度為1 */
21 valueLength += 1;
22 }
23 }
24 return valueLength;
25 }
說明:我想大家一看就懂了吧,關鍵語句是第18行。