--判断是否存在特殊字符
-- @param{string} str 名字字符串
--return{boolean}function _mt:filter_spec_chars(str)
local have_special =false
local k =1
local is_loop =truewhile is_loop doif k > #str then break end
local c = string.byte(str,k)if not c then break end
if c<192 then
if(c>=48 and c<=57)or(c>=65 and c<=90)or(c>=97 and c<=122) then
-- table.insert(ss, string.char(c))else
have_special =true
is_loop =false
end
k = k +1
elseif c<224 then
have_special =true
is_loop =false
k = k +2
elseif c<240 then
if c>=228 and c<=233 then
local c1 = string.byte(str,k+1)
local c2 = string.byte(str,k+2)if c1 and c2 then
local a1,a2,a3,a4 =128,191,128,191if c ==228 then a1 =184
elseif c ==233 then a2,a4 =190,c1 ~=190 and 191 or 165
end
if c1>=a1 and c1<=a2 and c2>=a3 and c2<=a4 then
-- table.insert(ss, string.char(c,c1,c2))else
have_special =true
is_loop =false
end
end
end
k = k +3
elseif c<248 then
have_special =true
is_loop =false
k = k +4
elseif c<252 then
have_special =true
is_loop =false
k = k +5
elseif c<254 then
have_special =true
is_loop =false
k = k +6
end
end
return have_special
end