首页 > 应用开发 > IT综合 > 日文全角文字长度check BUG
--------------------------------------------------------------------------
描述:
日文全角汉字以及符号存入数据库中实际是占2个字符。
所以check的时候如果直接用 testField.length() > 100 这样的话,会引起这个类型的bug。数据库中字段长度为100,输入51个日文汉字的话就会抛出异常。中文汉字也有相同的情况。
--------------------------------------------------------------------------
类型:
欧美项目后遗症,常见于没有做过国内或者日本项目的人。
--------------------------------------------------------------------------
示例代码:
java中:
// if(workSummary.length() > 1024) 错误的长度检查
if(workSummary.getBytes("MS932").length > 1024) {
javaScript:
以下JavaScript校验日文环境下的用户输入
直接调用fvallenchk函数即可,obj为要校验的对象,max_len为最大长度,该函数返回0表示长度超出,反之则通过.
function fgetdata(Obj){
wkValue = "";
wkType = Obj.type;
if (wkType == "text") {
wkValue = Obj.value;
} else if (wkType == "hidden") {
wkValue = Obj.value;
} else if (wkType == "select-one") {
SelIx = Obj.selectedIndex;
wkValue = Obj.options[SelIx].value;
} else if (wkType == "textarea") {
wkValue = Obj.value;
} else if (wkType == "password") {
wkValue = Obj.value;
}
return wkValue;
}
function fvallenchk(obj,max_len){
var chkstr,i,cnt = 0;
chkstr = "????????`??????????????????????????????????????????????????";
strValue = fgetdata(obj);
for(i=0; i
if ( chkstr.indexOf(strValue.charAt(i))== -1){
cnt+=2;
}else{
cnt++;
}
}else{
cnt++;
}
};
if (cnt > max_len) {
return "0";
} else {
return "1";
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16163/viewspace-970122/ ,如需转载,请注明出处,否则将追究法律责任。