本文介绍在PC端表单校验中,利用JavaScript将全角字符转换为半角字符的方法。通过解析Unicode编码规律,全角与半角字符相差65248,空格特殊处理。文章提供了完整的JS转换函数代码,涵盖全角转半角及半角转全角两种场景,适用于网页输入标准化处理。
背景与需求
近期在进行PC端网页的表单校验工作时,遇到了需要将用户输入的全角字符转换为半角符号的需求。由于此前对这类字符编码知识了解不多,经过查阅相关资料后,现将相关实现原理与代码整理分享。
全角与半角的定义
全角与半角的概念解析
在传统的英语或拉丁字母计算机系统中,每个字母或符号通常占用一个字节(8位,共256个编码空间)。然而,汉语、日语和韩语等文字字符数量远超256个,因此通常采用双字节存储单个字符。在使用等宽字体(如DOS系统或部分文本编辑器)时,中日韩文字显示的宽度是西文字符的两倍。因此,中日韩等文字被称为全角字符,而拉丁字母和数字则称为半角字符。为了排版整齐,有时英文字母、数字及其他符号也会从占用一个字符空间改为占用两个字符空间进行显示和存储。
转换原理与编码规律
转换的核心原理
全角空格的Unicode编码值为12288,而半角空格的编码值为32。
对于其他字符,半角字符的Unicode编码范围是33到126,全角字符的范围是65281到65374。它们之间的对应关系是:全角编码减去半角编码,差值恒为65248。
全角转半角代码实现
全角转半角的实现
function ToCDB(str) {
var tmp = "";
for (var i = 0; i < str.length; i++) {
if (str.charCodeAt(i) > 65248 && str.charCodeAt(i) < 65375) {
tmp += String.fromCharCode(str.charCodeAt(i) - 65248);
}
else {
tmp += String.fromCharCode(str.charCodeAt(i));
}
}
return tmp
}
半角转全角代码实现
半角转全角的实现
function ToDBC(txtstring) {
var tmp = "";
for (var i = 0; i < txtstring.length; i++) {
if (txtstring.charCodeAt(i) == 32) {
tmp = tmp + String.fromCharCode(12288);
}
if (txtstring.charCodeAt(i) < 127) {
tmp = tmp + String.fromCharCode(txtstring.charCodeAt(i) + 65248);
}
}
return tmp;
}
以上介绍了JavaScript中实现全角与半角转换的具体实例,希望能为相关开发工作提供参考。