程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP入門教程 >> chr(9)、chr(10)、chr(13)、chr(32)、chr(34)與特殊空格

chr(9)、chr(10)、chr(13)、chr(32)、chr(34)與特殊空格

編輯:ASP入門教程
chr(9)、chr(10)、chr(13)、chr(32)、chr(34)

所有關於 ASCII碼的表格:[url]http://www.asciitable.com/[/url]

chr(13) 是一個回車

Chr(10) 是個換行符

chr(32) 是一個空格符

9\34 是tab,未確定?

以下是一些示列
特殊的空格字符

特殊的空格字符
ASP編程中,我們常常使用trim(rtrim,ltrim)函數去掉一些數據的開頭和結尾的空格,筆者最近寫了一個ASP聊天室,有下面的一段代碼: 

<% dim name,title 
name=trim(request.form("name")) 
password=trim(request.form("passWord")) 
if name=""or passWord="" then response.redirect "error.ASP?error=name&name=null"  
myDSN="DSN=test;uid=test;pwd=test" 
set cn=server.createobject("adodb.connection") 
cn.open myDSN 
sql="insert into test(name,title) values('"&name&"','"&passWord&"')" 
cn.execute(sql) 
cn.close%> 

筆者使用了trim函數來去掉開頭和結尾的空格,在一般的情況下,這段程序執行的很正常,但是後來筆者竟然發現有人竟然可以使用空格進來,意思就是說,該用戶的name完全為空格,但是筆者嘗試自己使用空格卻無論都不能通過(即被程序監測了出來),開頭和結尾的空格都被trim函數給去掉了,即使中間有空格,筆者需要的話也可以使用一個函數把中間的空格給去掉,由於筆者使用的是sql數據庫記錄下的用戶資料,於是筆者懷疑他使用了其它什麼的東西讓系統看不到,於是去察看紀錄用戶資料的sql數據庫(筆者曾經使用這種方法看到了帶換行符的用戶),但是筆者仍然看到數據庫中的改用戶的資料也是空格,這難道說該用戶使用了一種手段可以繞過我的用戶名和密碼監測嗎???實在找不到程序上的漏洞,於是只能向這位用戶請教,幸運的是這位用戶爽快的告訴了筆者,原來是"Alt+255",按住alt鍵然後依次按下小鍵盤中"2","5","5"就會產生一個比較特殊的東西"空格"字符(這個概念筆者也不是比較清楚,這是一種控制字符,在一些編輯器中可以看到Word2000,應該還有其他的控制字符),這個空格字符不同於傳統的按下空格鍵產生的字符,它的asc代碼是255,而傳統的space鍵入的空格的asc代碼是32,trim函數只能認識asc代碼為32的代碼並去除,所以出現了出現空格用戶的情況!針對這種情況筆者設計了下面的兩種函數去掉這"空格"字符:
function xuankong(str) 
dim result 
dim j 
   j=len(str) 
   result="" 
dim i  
for i = 1 to j 
   select case mid(str,i,1) 
       case "<" 
          result=result+"<" 
       case ">" 
          result=result+">" 
       case chr(34)   
          result=result+""" 
       case "&" 
          result=result+"&"  '以上代碼轉換一些Html標記 
       case chr(255) '防止特殊空格 
          result=result 
       case chr(13) '防止回車符 
          result=result+"" 
       case chr(10) '防止換行符 
          result=result+"" 
       case else 
          result=result+mid(str,i,1) 
  end select 
next  
xuankong=result 
end function 
然後在你的ASP程序中使用這個函數,比如: 
name=xuankong(trim(request.form("name"))) 

因為字符0-z asc代碼的數值為 48-122 這一個區段 ,所以可以使用如下的方法監測:

dim j 
j=len(trim(request.form("name"))) 
for i= 1 to  j 
if  asc(mid(name,i,1))>122 or asc(mid(name,i,1))<48 then response..redirect"error.ASP?
error=special" 
next
 
雖然這種“空格”暫時沒有發現會破壞程序的問題,但是卻是可以讓人搗亂的,還是防了的好,不過這種空格也有一種好處,如果作為你得上網密碼的話,嘿嘿… …恐怕沒有幾個人能看到吧!看到的都是以為是space,但是卻不是… … 筆者不熟悉PHPJSP所以不知道在這兩種東西中是否會存在這種問題
如何讀出空格

如何讀出空格

我們在網頁中經常要動態顯示從文件中取出來的內容,假如你編寫了一個聊天室或論壇之類的程序,每一位發表言論者的內容都要先存在文本文件中,然後再顯示在網頁上。但是我們在網頁上讓用戶輸入內容的控件是文本框。那麼文本框中的內容顯示在網頁上時不能把類似空格、換行的字符顯示出來,也就是說沒有段落。要想在網頁上顯示段落,必須在我們輸入文本的空格、換行字符處插入Html標志才能把這些字符顯示出來,請看下面的例子。

假如在網頁上是一個聊天室畫面,我們在文本框中輸入內容後,點擊“提交”就可在頁面上把我們的內容顯示出來,文本框名為Text1 ,我們用下面的方法就可以很巧妙地實現顯示文本換行和空格的功能。

<%
......
......
str=request.querystring("text1")
str=Replace(str, Chr(32), "&nbsp")
'把空格換成&nbsp標志
str=Replace(str, vbCrLf, "<br>")
'把回車換行符換成<br>標志
Response.write str
......
......
%>

經過上面的代碼後,我們就把文本中的回車換行符變為浏覽器所能識別的<br>換行標,而把空格換為&nbsp空格標志。其中Chr(32)表示空格,vbCrLf表示回車換行。
chr(13) 是一個回車
(
例子:把所有回車符替換為<br/>
#Replace(foo, Chr(13), "<br />", "ALL")#


)

Chr(10) 是個換行符

所有關於 ASCII碼的表格:[url]http://www.asciitable.com./[/url]

<cfscript>
/**
* 一個增強版的文章段落格式化函數
* 使用)&nbsp;替換TAB,支持多系統
* Rewrite and multiOS support by Nathan Dintenfas.
*
* @param string The string to format. (Required)
* @return Returns a string.
* @author Ben Forta ([email][email protected][/email])
* @version 3, June 26, 2002
*/
function Paragrap1hFormat2(str) {
//first make Windows style into Unix style
str = replace(str,chr(13)&chr(10),chr(10),"ALL");
//now make Macintosh style into Unix style
str = replace(str,chr(13),chr(10),"ALL");
//now fix tabs
str = replace(str,chr(9),"&nbsp;&nbsp;&nbsp;","ALL");
//now return the text formatted in Html
return replace(str,chr(10),"<br />","ALL");
}
</cfscript>
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved