在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下:
text="是不是汉字,ABC。" for i=1 to len(text) response.write Mid(text,i,1)&":"&abs(asc(Mid(text,i,1))) if abs(asc(Mid(text,i,1)))>127then Response.Write("是汉字") else Response.Write("不是汉字") end if response.write "<br>" next
第二种用汉字的 UNICODE 编码范围判断,
text="是不是汉字,ABC。" for i=1 to len(text) response.write mid(text,i,1)&":"& hex(AscW(Mid(text,i,1))) if hex(AscW(Mid(text,i,1)))>="4e00" and hex(AscW(Mid(text,i,1)))<= "9fbb" then Response.Write("是汉字") else Response.Write("不是汉字") end if response.write "<br>" next
注意代码中的&号不要和hex紧挨着,要分开一个空格,否则程序会出错。
第三种用正则表达式判断
text="是不是汉字,ABC。" for i=1 to len(text) response.write Mid(text,i,1)&":"&abs(asc(Mid(text,i,1))) set regexpobj=new regexp regexpobj.pattern="^[\u4e00-\u9fa5]+$" regcheck=regexpobj.test(Mid(text,i,1)) set regexpobj=nothing if regcheck then response.write "是汉字" else response.write "不是汉字" end if response.write "<br>" next
附两个小函数
'中文转unicode function tounicode(str) tounicode="" dim i for i=1 to len(str) 'asc函数:返回字符串的第一个字母对应的ANSI字符代码 'AscW函数:返回每一个GB编码文字的Unicode字符代码 'hex函数:返回表示十六进制数字值的字符串 tounicode=tounicode & "\u" & LCase(Right("0000" & Cstr(hex(AscW(mid(str,i,1)))),4)) next end function 'unicode转中文 function unicodeto(str) str=replace(str,"\u","") unicodeto="" dim i for i=1 to len(str) step 4 'cint函数:将Variant类型强制转换成int类型 'chr函数:返回数值对应的ANSI编码字符 'ChrW函数:返回数值对应的Unicode编码字符 unicodeto=unicodeto & ChrW(cint("&H" & mid(str,i,4))) next end function