前几天在OA Web开发过程中,一位公务员领导突发奇想,要求我把用户输入的所以字符串中的全角字符都转换为半角(unicode)。由于我在这方面的没有了解,于是上google搜索转换函数,发现国内很少有文章涉及到相关信息。其中一个是
http://www.jxyc.gov.cn/blog/withwolf/showlog.asp?log_id=468&cat_id=0
但此函数不能处理混合输入问题,当全角半角一起输入时就出错。参照上面程序,再结合一些Unicode Wide 编码规则:
请参考
以下是转换程序(javascript)
/****************************
* 参数说明:
* 全角->半角
* str:要转换的字符串
* 返回值类型:字符串
**************************** /
function DBC2SBC(str) {
var i;
var result=';
for(i=0;i code=str.charCodeAt(i);
// “65281”是“!”,“65373”是“}”
if(code>=65281&&code<65373)
// “65248”是转换码距
result+=String.fromCharCode(str.charCodeAt(i)-65248);
else result+=str.charAt(i);
}
alert(result);
return result;
}
http://www.jxyc.gov.cn/blog/withwolf/showlog.asp?log_id=468&cat_id=0
但此函数不能处理混合输入问题,当全角半角一起输入时就出错。参照上面程序,再结合一些Unicode Wide 编码规则:
请参考
以下是转换程序(javascript)
/****************************
* 参数说明:
* 全角->半角
* str:要转换的字符串
* 返回值类型:字符串
**************************** /
function DBC2SBC(str) {
var i;
var result=';
for(i=0;i code=str.charCodeAt(i);
// “65281”是“!”,“65373”是“}”
if(code>=65281&&code<65373)
// “65248”是转换码距
result+=String.fromCharCode(str.charCodeAt(i)-65248);
else result+=str.charAt(i);
}
alert(result);
return result;
}