ActiveX中通过CHTTPFile的sendRequest向asp发送Form。日文数据提交过去是乱码。请问如何编码才能解决这个问题。

解决方案 »

  1.   

    要先调用URLEncode吧,有很多种的Encode方法,这里提供一种:(好像在VC中没有直接的调用只能自己写)在.h中:
    inline BYTE toHex(const BYTE &x);
    CString MyURLEncode(CString strIn);在.cpp中:
    inline BYTE CMYTEST::toHex(const BYTE &x)
    {
    return x > 9 ? x + 55: x + 48;
    }CString CMYTEST::MyURLEncode(CString strIn)
    {
    CString sOut;

        const int nLen = strIn.GetLength() + 1;    register LPBYTE pOutTmp = NULL;
        LPBYTE pOutBuf = NULL;
        register LPBYTE pInTmp = NULL;
        LPBYTE pInBuf =(LPBYTE)strIn.GetBuffer(nLen);
        BYTE b = 0;

        //alloc out buffer
        pOutBuf = (LPBYTE)sOut.GetBuffer(nLen  * 3 - 2);//new BYTE [nLen  * 3];    if(pOutBuf)
        {
            pInTmp = pInBuf;
    pOutTmp = pOutBuf;

    // do encoding
    while (*pInTmp)
    {
        if(isalnum(*pInTmp))
            *pOutTmp++ = *pInTmp;
        else
            if(isspace(*pInTmp))
        *pOutTmp++ = '+';
    else
    {
        *pOutTmp++ = '%';
        *pOutTmp++ = toHex(*pInTmp>>4);
        *pOutTmp++ = toHex(*pInTmp%16);
    }
        pInTmp++;
    }
    *pOutTmp = '\0';
    //sOut=pOutBuf;
    //delete [] pOutBuf;
    sOut.ReleaseBuffer();
        }
        strIn.ReleaseBuffer();
        return sOut;
    }就可以调用MyURLEncode来Encode你的那些日文了,再Post过去。