ActiveX中通过CHTTPFile的sendRequest向asp发送Form。日文数据提交过去是乱码。

dy1978 2003-03-21 02:42:53
ActiveX中通过CHTTPFile的sendRequest向asp发送Form。日文数据提交过去是乱码。请问如何编码才能解决这个问题。
...全文
48 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
2i3i4i 2003-03-21
  • 打赏
  • 举报
回复
要先调用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过去。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧