I couldn't quickly find a google answer, and I don't have the help in front of me (long story), so, my q开发者_运维知识库uestion is: Is there an easy way to URL-encode a string in MS Visual FoxPro 8
Here's a pure FoxPro function that does what you need:
    ********************************************************
    FUNCTION URLEncode
    *******************
    ***  Function: Encodes a string in URL encoded format
    ***            for use on URL strings or when passing a
    ***            POST buffer to wwIPStuff::HTTPGetEx
    ***      Pass: tcValue  -   String to encode
    ***    Return: URLEncoded string or ""
    ********************************************************
    LPARAMETER tcValue
    LOCAL lcResult, lcChar, lnSize, lnX
    *** Large Buffers use the wwIPStuff function 
    *** for quicker response
    if  LEN(tcValue) > 512
       lnSize=LEN(tcValue)
       tcValue=PADR(tcValue,lnSize * 3)
       DECLARE INTEGER VFPURLEncode ;
          IN WWIPSTUFF ;
          STRING @cText,;
          INTEGER cInputTextSize
       lnSize=VFPUrlEncode(@tcValue,lnSize)
       IF lnSize > 0
          RETURN SUBSTR(TRIM(tcValue),1,lnSize)
       ENDIF
       RETURN ""
    ENDIF   
    *** Do it in VFP Code
    lcResult=""
    FOR lnX=1 to len(tcValue)
       lcChar = SUBSTR(tcValue,lnX,1)
       DO CASE
       CASE ATC(lcChar,"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~") > 0
          lcResult=lcResult + lcChar
       CASE lcChar=" "
          lcResult = lcResult + "%20"
       OTHERWISE
           *** Convert others to Hex equivalents
           lcResult = lcResult + "%" + RIGHT(transform(ASC(lcChar),"@0"),2)
       ENDCASE
    ENDFOR && lnX=1 to len(tcValue)
    RETURN lcResult
    * EOF URLEncode
Note it has a fallback for wwipstuff.dll on larger buffers - if you're using any West Wind tools (West Wind Client Tools or WebConnection) you'll have this DLL if not just remove that block of code. For larger buffers (say encoding POST buffers) the Fox code routine can get slow hence the fallback to a DLL to provide this functionality.
Another option if you only encode URLs (rather than POST buffers HTTP POST operations) you can use the InternetCanonicalizeUrl API in Windows:
*******************************************
FUNCTION UrlEncode(lcUrl)
*************************
DECLARE INTEGER InternetCanonicalizeUrl IN WinInet.DLL ;
   STRING url, STRING @buffer, INTEGER @size, intEGer flags 
lnSize = LEN(lcUrl) *3
lcBuffer = REPL(" ",lnSize)
lnSize = LEN(lcBuffer)
lnFlags = 0 &&ICU_ENCODE_PERCENT 
if( InternetCanonicalizeUrl(lcUrl,@lcBuffer,@lnSize, lnFlags) == 0)
    RETURN ""
ENDIF   
IF lnSize > 0
   RETURN LEFT(lcBuffer,lnSize)
ENDIF
RETURN ""
This code is fast but it's very lenient in its character encoding. Basically it doesn't encode any extended characters which may or may not be important for you. Use this if you really are only encoding URLs. If you are UrlEncoding HTTP Form variables use the routine above.
Take a look here: http://fox.wikis.com/wc.dll?Wiki~GoogleTranslater The urlEncode function might be what you're looking for.
Also, check out http://www.west-wind.com/presentations/shellapi/shellapi.asp Listing #3 is very close to what I use.
 
         
                                         
                                         
                                         
                                        ![Interactive visualization of a graph in python [closed]](https://www.devze.com/res/2023/04-10/09/92d32fe8c0d22fb96bd6f6e8b7d1f457.gif) 
                                         
                                         
                                         
                                         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论