VFPCGI Day12
出自VFP Wiki
(修訂版本間差異)
在2006年11月22日 (三) 14:10的最新修訂版本
VFPCGI的第十二天
既然已經有了 UrlDecode 這個函數,我們再回頭來看 cgi06。
首先我們修改 Request 類別的 ParseData 方法
HIDDEN PROCEDURE ParseData LPARAMETERS cInput as String , oCollection as Collection LOCAL i, nStart, nPos, nEqualPos LOCAL lcStr, lcKey, lcValue * parse it. i = 1 nStart = 1 nPos=AT( "&", cInput, i ) IF nPos == 0 THEN nPos = LEN( cInput ) ENDIF DO WHILE nPos!=0 lcStr = SUBSTR( cInput, nStart, nPos-nStart ) nEqualPos = AT( "=", lcStr ) IF nEqualPos!=0 THEN lcKey = SUBSTR( lcStr, 1, nEqualPos-1 ) lcValue = UrlDecode( SUBSTR( lcStr, nEqualPos+1 ) ) oCollection.Add( lcValue, lcKey ) ENDIF i=i+1 nStart = nPos + 1 nPos=AT( "&", cInput, i ) ENDDO IF nStart < LEN(cInput) THEN nPos = LEN( cInput ) lcStr = SUBSTR( cInput, nStart ) nEqualPos = AT( "=", lcStr ) IF nEqualPos!=0 THEN lcKey = SUBSTR( lcStr, 1, nEqualPos-1 ) lcValue = UrlDecode( SUBSTR( lcStr, nEqualPos+1 ) ) oCollection.Add( lcValue, lcKey ) ENDIF ENDIF ENDPROC
基本上只修改兩行,用 UrlDecode 來處理 lcValue
lcValue = UrlDecode( SUBSTR( lcStr, nEqualPos+1 ) )接著將 cgi06 最上面的
set procedure to cgilib改為
set procedure to cgilib, httputility
編譯以後再執行看看,相信就已經可以處理中文了。 但是,我們還沒講到 unicode 與網頁編碼問題的部份...冏...
p.s. 之前有人問 Apache 的部份,我猜想可能是 Apache 設定裡面的 AddDefaultCharset 沒有註解掉的原因~ 如果沒有註解掉,Apache 都會假定網頁編碼是 utf-8。