我想我们大家都知道,好多数据库中存储中文汉字与英文的字节数是不同的。如果某个字段长度有固定大小,我们就需要对插入数据的大小进行校验。之前做安邦电销项目时就曾经遇到该类问题,现在将其前台与后台的校验核心方法罗列出来,希望能对大家有所帮助。
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行。