2007-01-22

Prohibit special characters

Code in SP
只允許存入
1. 半形數字 asc(48~57)
2. 半形英文大寫 asc(65~90)
3. 半形英文小寫 asc(97~122)
4. 中文 (附註)
附註:
用sql的ascii function可以取得中文字第一個byte的ascii碼
在big5中, 中文字分部在A440 ~ F9DC
也就是第一個byte的ascii碼介於164~249
但是249區段中有以下的特殊字元, 所以必需再過濾一下
╔ ╦ ╗╠ ╬ ╣ ╚ ╩ ╝ ╒ ╤ ╕ ╞ ╪ ╡ ╘ ╧ ╛ ╓╥ ╖ ╟ ╫ ╢ ╙ ╨ ╜ ║ ═ ╭ ╮ ╰ ╯ ▓
Declare @ASC int
Declare @CheckCount tinyint
Declare @IllegalCharacters nvarchar(250)
set @IllegalCharacters=’╔ ╦ ╗╠ ╬ ╣ ╚ ╩ ╝ ╒ ╤ ╕ ╞ ╪ ╡ ╘ ╧ ╛ ╓╥ ╖ ╟ ╫ ╢ ╙ ╨ ╜ ║ ═ ╭ ╮ ╰ ╯ ▓’
set @CheckCount=1
while (@CheckCount<=len(@CharacterName))
Begin
set @ASC=ascii(substring(@CharacterName,@CheckCount,1))
if (@ASC<48 or (@ASC>57 and @ASC<65) or (@ASC>90 and @ASC<97) or (@ASC>122 and @ASC<164) or @ASC>249)
return -3
else
Begin
if charindex(substring(@CharacterName,@CheckCount,1),@IllegalCharacters)!=0
return -3
End
set @CheckCount=@CheckCount+1
End
再附註:
以上的寫法, 包含全型的大小寫英文, 數字, 注音文, 都會被過濾出來

沒有留言:

張貼留言