JS 全角符号与半角符号的互相转换
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JS 全角符号与半角符号的互相转换 </title> </head> <body> <script> //全角空格为12288,半角空格为32 //其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 //全角转换为半角函数 function Q2B(str){ var tmp = ""; for(var i=0;i<str.length;i++){ if(str.charCodeAt(i) >= 65281 && str.charCodeAt(i) <= 65374){ // 如果位于全角!到全角~区间内 (65281-65374) 全角空格 12288 与半角符号都均相差65248 tmp += String.fromCharCode(str.charCodeAt(i)-65248) }else if(str.charCodeAt(i) == 12288){ // 全角空格的值,它没有遵从与ASCII的相对偏移,必须单独处理 tmp += ' '; }else{ // 不处理全角空格,全角!到全角~区间外的字符 tmp += str[i]; } } return tmp; } //半角转换为全角函数 function B2Q(str){ var tmp = ""; for(var i=0;i<str.length;i++){ if(str.charCodeAt(i) >= 33 && str.charCodeAt(i) <= 126){ // 如果位于半角!到半角~区间内 (33-126) 半角空格 是 32 与半角符号都均相差65248 tmp += String.fromCharCode(str.charCodeAt(i)+65248) }else if(str.charCodeAt(i) == 32){ // 半角空格的值,它没有遵从与ASCII的相对偏移,必须单独处理 tmp += ' '; }else{ // 不处理半角空格,半角!到半角~区间外的字符 tmp += str[i]; } } return tmp; } document.write(Q2B('??123123 ! !??!!??')); document.write('<hr/>'); document.write(B2Q('??123123 ! !??!!??')); </script> </body> </html>