急,求教quoted-printable解码函数

supertj 2005-05-18 10:38:27
只知道VC++里的解码函数是这样的.不知道ASP里怎么解.
望各位老师教导一下.谢谢.比较急
int DecodeQuoted(const char* pSrc, unsigned char* pDst, int nSrcLen)
{
int nDstLen; // 输出的字符计数
int i;

i = 0;
nDstLen = 0;

while (i < nSrcLen)
{
if (strncmp(pSrc, "=\r\n", 3) == 0) // 软回车,跳过
{
pSrc += 3;
i += 3;
}
else
{
if (*pSrc == '=') // 是编码字节
{
sscanf(pSrc, "=%02X", pDst);
pDst++;
pSrc += 3;
i += 3;
}
else // 非编码字节
{
*pDst++ = (unsigned char)*pSrc++;
i++;
}

nDstLen++;
}
}

// 输出加个结束符
*pDst = '\0';

return nDstLen;
}

...全文
124 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
supertj 2005-05-20
  • 打赏
  • 举报
回复
解邮件里的quoted-printable.
supertj 2005-05-20
  • 打赏
  • 举报
回复
可以实现.太感谢了.
supertj 2005-05-20
  • 打赏
  • 举报
回复
太.....太....感激了.
在上海不.请你吃饭啊.呵呵...

我马上来试一下.:D
是是非非 2005-05-20
  • 打赏
  • 举报
回复
f=False时结果

编码前:测试一下/圪圪/eglic@CSDN/webmaster@i-love-mm.com
编码后:=B2=E2=CA=D4=D2=BB=CF=C2/=DB=D9=DB=D9/eglic@CSDN/webmaster@i-love-mm.com
解码后:测试一下/圪圪/eglic@CSDN/webmaster@i-love-mm.com

=====
f=True时结果

编码前:测试一下/圪圪/eglic@CSDN/webmaster@i-love-mm.com
编码后:=B2=E2=CA=D4=D2=BB=CF=C2=2F=DB=D9=DB=D9=2F=65=67=6C=69=63=40=43=53=44=4E=2F=77=65=62=6D=61=73=74=65=72=40=69=2D=6C=6F=76=65=2D=6D=6D=2E=63=6F=6D
解码后:测试一下/圪圪/eglic@CSDN/webmaster@i-love-mm.com
是是非非 2005-05-20
  • 打赏
  • 举报
回复
QPEncoding(v,f)
这个函数里面的第二个参数f表示是否对ASCII字符编码,设置为False时可以减少编码后字符串的长度
设置为True可以提高保密度。这个参数对QPDecoding结果没有任何影响

是是非非 2005-05-20
  • 打赏
  • 举报
回复
<%
Public Function QPEncoding(v,f)
Dim s,t,i,j,h,l,x : s = "" : x=Len(v)
For i = 1 To x
t = Mid(v,i,1) : j = Asc(t)
If j> 0 Then
If f Then
s = s & "=" & Right("00" & Hex(Asc(t)),2)
Else
s = s & t
End If
Else
If j < 0 Then j = j + &H10000
h = (j And &HFF00) \ &HFF
l = j And &HFF
s = s & "=" & Hex(h) & "=" & Hex(l)
End If
Next
QPEncoding = s
End Function
Public Function QPDecoding(sIn)
Dim s,i,l,c,t,n : s="" : l=Len(sIn)
For i=1 To l
c=Mid(sIn,i,1)
If c<>"=" Then
s = s & c
Else
c=Mid(sIn,i+1,2) : i=i+2 : t=CInt("&H" & c)
If t<&H80 Then
s=s & Chr(t)
Else
c=Mid(sIn,i+1,3)
If Left(c,1)<>"=" Then
QPDecoding=s
Exit Function
Else
c=Right(c,2) : n=CInt("&H" & c)
t=t*256+n-65536
s = s & Chr(t) : i=i+3
End If
End If
End If
Next
QPDecoding=s
End Function
Dim s : s="测试一下/圪圪/eglic@CSDN/webmaster@i-love-mm.com"
Response.Write "编码前:" & s & "<br />"
Response.Write "编码后:" & QPEncoding(s,False) & "<br />"
Response.Write "解码后:" & QPDecoding(s) & "<br />"
%>
是是非非 2005-05-20
  • 打赏
  • 举报
回复
quoted-printable和URLEncoding是一样的,只是吧%替换成了=
libao1983 2005-05-20
  • 打赏
  • 举报
回复
用户不用注册dll的
你就把那个vc的函数写上去,在稍微一查资料,就能写个解码的dll
然后生成dll
在服务器注册,ok,createobject就可以了
supertj 2005-05-19
  • 打赏
  • 举报
回复
要求用户注册DLL比较麻烦.最好直接有现成的函数.

而且我VC不是很熟.:P

大家帮帮我啊.:D
mymyal123 2005-05-18
  • 打赏
  • 举报
回复
解什么码?
libao1983 2005-05-18
  • 打赏
  • 举报
回复
既然用VC可以写
那么用VC写个组件
然后注册
然后CreateObject
然后再解码呵呵

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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